Spring Boot 2.3 新特配置文件属性跟踪

背景

当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下:

spring:
  profiles:
    active: @project.profile@  #根据maven 动态配置profile
---
spring:
  profiles: dev
demo: lengleng_dev
---
spring:
  profiles: prd
demo: lengleng_prd复制代码

或者使用 spring cloud 配置中心 (nacos/config)等

Spring Boot 2.3 新特配置文件属性跟踪

再有就是 应用配置的同一个属性,值的来源可能来自 配置文件、环境变量、启动参数 等等。 很多情况由于 如上配置的复杂性,应用在读取配置的时候,并不是我们预期的值 ,比如我们想使用是配置文件 dev 环境的值,却被环境变量的 或者其他的数据覆盖等,这些往往只有等我们运行时,输出日志才能发现错误原因。

解决方案

spring boot 2.3 Actuator 提供 /actuator/configprops 端点 (之前版本也有此端点,但是行为发生变化了 /actuator/env 保持一致 ),提供对配置文件属性跟踪功能, 方便我们在 spring boot 应用中,实时的获取配置文件实际加载值

如何使用

  • 引入 actuator 依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>复制代码
  • 暴露 configprops 端点
management:
  endpoints:
    web:
      exposure:
        include: 'configprops'复制代码
  • 对应配置类
@Data
@Component
@ConfigurationProperties("demo")
public class DemoConfig {

    private String username;

    private String password;
}复制代码
  • 访问 Endpoint 实时获取配置文件的值

Spring Boot 2.3 新特配置文件属性跟踪

特殊说明

  • configprops Endpoint 会对敏感字段默认脱敏 ,默认关键字类
public class Sanitizer {

    private static final String[] REGEX_PARTS = { "*", "$", "^", "+" };

    private static final Set<String> DEFAULT_KEYS_TO_SANITIZE = new LinkedHashSet<>(Arrays.asList("password", "secret",
            "key", "token", ".*credentials.*", "vcap_services", "sun.java.command"));
}复制代码
  • 配置个性化脱敏规则
management:
  endpoint:
    configprops:
      keys-to-sanitize:
        - 'aaa'
        - 'bbb'复制代码
  • 当配置类的某个属性值为空时, 通过 /actuator/configprops 访问,不会展示此属性。

总结

  • configprops 端点对应 ConfigurationPropertiesReportEndpoint 类, 通过阅读 可以了解从 PropertySource 获取配置的技巧

  • 应用场景: CI 在执行单元测试的前置应该通过此端点判断配置是否和预期一致,避免无用执行条件

  • 以上源码可以参考: github.com/lltx/spring… Spring Boot 2.3 新特配置文件属性跟踪

原文 

https://juejin.im/post/5ef053cbf265da02b2090eac

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Boot 2.3 新特配置文件属性跟踪

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址