在通用jar包中引入其他spring boot starter,并在通用jar包中直接配置这些starter的yml相关属性

场景

我在通用jar包中引入 spring-boot-starter-actuator 这样希望引用通用jar的所有服务都可以直接使用 actuator 中的功能,

问题在于,正常情况下,actuator的配置都写在每个项目的yml文件中,这就意味着,虽然每个项目都有了该jar,但是配置还是得单独写,

于是考虑能不能在common jar中直接写这个配置,其他服务都避免做出改动,思路方向就是想着在spring服务启动前,

能不能通过一种方式将我们的配置注入到spring的配置中,类似在application.yml中拦截添加一下,

通过 EnvironmentPostProcessor 可以帮我们实现这个功能。

实现

第一步,定义好yml文件。

复制代码
management:
  endpoints:
    web:
      exposure:
        include:
          - info
          - health
          - loggers #默认只暴露 /health 以及 /info 端点

第二步,自定义 PostProcessort 实现 EnvironmentPostProcessor,在这里,我们读取自定义的配置文件,并添加到 environment 中。

复制代码
public class ActuatorPropertiesPostProcessor implements EnvironmentPostProcessor {
    @SneakyThrows
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        PropertySource propertySource = new YamlPropertySourceLoader().load("actuator.yml"
                                                                            , new FileUrlResource(ActuatorPropertiesPostProcessor.class.getResource("/Actuator.yml"))).get(0);
        environment.getPropertySources().addLast(propertySource);
    }

}

第三步,定义好 spring.factories,内容指向你刚写好的类。

复制代码
org.springframework.boot.env.EnvironmentPostProcessor=you.package.name.ActuatorPropertiesPostProcessor

大功告成,这样你的所有引用common jar的服务就都可以使用actuator功能了。

相关推荐
陈果然DeepVersion8 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(五)
java·spring boot·kafka·向量数据库·大厂面试·rag·ai智能客服
FAFU_kyp9 小时前
Spring Boot 邮件发送系统 - 从零到精通教程
java·网络·spring boot
晨晖29 小时前
SpringBoot的yaml配置文件,热部署
java·spring boot·spring
雍凉明月夜10 小时前
人工智能学习中深度学习之python基础之迭代器、生成器、文件处理和模块等
python·深度学习·学习·pycharm
陈果然DeepVersion13 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(六)
spring boot·kafka·消息队列·向量数据库·java面试·rag·ai智能客服
陈果然DeepVersion14 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(四)
java·spring boot·微服务·kafka·面试题·rag·ai智能客服
陈果然DeepVersion14 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(二)
spring boot·kafka·消息队列·向量数据库·java面试·rag·ai智能客服
陈果然DeepVersion14 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(三)
spring boot·kafka·消息队列·java面试·大厂面试题·rag·ai智能客服
88Ra15 小时前
Spring Boot 3.3新特性全解析
java·spring boot·后端