美文网首页
JAVA/Spring Boot 2.3 新特性配置文件属性跟踪

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

作者: JAVA炭烧 | 来源:发表于2021-05-10 17:40 被阅读0次

    先点赞,再观看!
    背景
    当我们使用 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)等


    再有就是 应用配置的同一个属性,值的来源可能来自配置文件、环境变量、启动参数等等。 很多情况由于如上配置的复杂性,应用在读取配置的时候,并不是我们预期的值,比如我们想使用是配置文件 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 实时获取配置文件的值


    特殊说明

    • 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 在执行单元测试的前置应该通过此端点判断配置是否和预期一致,避免无用执行条件
    写在最后的话

    今天,我们介绍了Spring Boot 2.3 新特性配置文件属性跟踪

    想要获得更多关于spring boot的资料,彻底吃透,可以私信我关键词[资料],获取更多java相关知识.

    ~联系方式~
    wechat: Mlzg5201314zz
    扣扣:2967728282///
    

    相关文章

      网友评论

          本文标题:JAVA/Spring Boot 2.3 新特性配置文件属性跟踪

          本文链接:https://www.haomeiwen.com/subject/povidltx.html