7-配置属性

Charlie

1. 👍属性来源

不仅仅是Spring Boot需要的属性,也包含我们自己定义的属性。

  1. 配置文件application.ymlapplication.properties,两个文件可以混用
    • server.port = 8090
  2. 命令行参数commandLineArgs,在程序中直接获取
    • java -jar taco-cloud-sd-jdbc-0.0.3-SNAPSHOT.jar -- server.port=8081
  3. JVM系统参数 -D
    • java -Dserver.port=8091 -jar taco-cloud-sd-jdbc-0.0.3-SNAPSHOT.jar
  4. 操作系统环境变量
    • set SERVER_PORT=8082、java -jar taco-cloud-sd-jdbc-0.0.3-SNAPSHOT.jar

2. YAML文件

  • 使用缩进表示层级关系,不允许使用Tab建,只能使用空格(一般2个空格)
  • # 表示注释
  • 对象:键值对,使用冒号结构表示
    • 冒号后面加空格
    • animal: pets
    • hash: {name: Steve, foo: bar}
  • 一般数组:一组连线开头的行,构成一个数组
1
2
3
- Cat
- Dog
- Goldfish
  • 行内数组:animal: [Cat, Dog]

3. 配置数据源

  • org.h2.Driver
  • com.mysql.cj.jdbc.Driver

不一定要在application.yaml里显式指定,只添加对应依赖spring也能识别

4. 建立HTTPS安全通道

  • 解决客户端和服务端传输数据时的加密问题
    • HTTP明文传输数据,不安全
    • TLS/SSL具有身份认证、信息加密和完整性校验

image.png

SSL(Secure Sockets Layer 安全套接字协议 ),及其继任者传输层安全(Transport Layer Security , TLS) 是为网络通信提供安全及数据完整性的一种安全协议。TLS 与SSL在传输层与应用层之间对网 络连接进行加密。

4.1. 单向认证

  • 客户端校验服务端证书的合法性,服务端不需要校验客户端

image.png

4.2. 双向认证

  • 客户端要校验服务端,服务端要校验客户端的证书

相对复杂

image.png

5. keytool

  • 是JDK自带的一个密钥库管理工具,我们可以用它生产密钥库、管理证书

6. 从配置属性获取值/自定义属性

@ConfigurationProperties(prefix=<>)yaml中加载属性值

通过application.yml文件提供值
环境变量:taco_orders_pageSize=12
程序参数:–taco.orders.pageSize=13
访问:http://localhost:8080/orders

7. 多个Profile文件

7.1. 命名规则

Profile文件命名有固定规则

  • 定义特定profile的属性,通过使用不同的YAML或属性文件
    • application-{profile名}.properties
    • application-{profile名}.yml
  • 也可以将不同profile属性放到同一个YAML文件中,使用3个短线进行分隔,并且使用spring.profiles属性来命名profile

7.2. 激活Profile

  • 环境变量:spring_profiles_active=prod
  • 命令行参数:java -jar <>.jar –spring.profiles.active=prod
  • JVM系统属性:java -Dspring.profiles.active=prod -jar <>.jar
  • 使用注解@Profile件化地创建Bean,可以加到@Configuration@Bean
    • 场景:测试环境下初始化数据库填充测试数据,但是在生产环境下不能乱初始化

8. 配置日志

  • 默认Logback,配置文件logback.xml
  • 默认日志级别: INFO
  • 日志配置(application.yml)
    • 可以根据不同包路径设置不同日志级别
1
2
3
4
5
6
logging:
level:
root: WARN
org:
Springframework:
security: DEBUG

9. 👍Actuator

  • 提供许多端点(endpoints), 监测程序运行情况
    • /actuator,查询所有暴露端点
    • /actuator/configprops,查询配置属性
    • /actuator/health,健康检查
    • /actuator/beans,包含bean依赖关系
  • 想要获得更多端点如何配置:include: "*"暴露所有端口, 否则只暴露/actuator/health
1
2
3
4
5
management:
endpoints:
web:
exposure:
include: "*"

10. 分布式系统配置数据的获取

  • 配置服务: Config Server
    • 给所有微服务提供配置数据
    • 配置可能来自文件系统,git仓库等

image.png

  • 标题: 7-配置属性
  • 作者: Charlie
  • 创建于 : 2023-10-26 18:10:00
  • 更新于 : 2024-07-05 12:55:04
  • 链接: https://chillcharlie357.github.io/posts/c75c265a/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论