当前位置: 首页 > article >正文

在通用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功能了。


http://www.kler.cn/news/137173.html

相关文章:

  • 大数据开发电脑千元配置清单
  • 【leetcode|哈希表、动态规划】最长连续序列、最大子数组和
  • ELK中segemntmerge操作对写入性能的影响以及控制策略和优化方法
  • 在做题中学习(65):Z字形变换
  • leetcode hot100【LeetCode 142. 环形链表 II】java实现
  • 【Wireshark笔记】如何在Wireshark中使用过滤器去除TCP Dup ACK
  • 数据仓库高级面试题
  • Texpad所见即所得
  • WPF Button点击鼠标左键弹出菜单
  • 每日汇评:美日在两个月低点附近似乎较为脆弱,熊市可能会在FOMC会议纪要公布前暂停
  • Java查询多条数据放入word模板 多个word文件处理成zip压缩包并在前端下载.zip文件
  • [C语言 数据结构] 栈
  • C++大神之路——环境篇
  • 【TCP连接的状态】
  • 浅谈开源和闭源的认知
  • Spring的后处理器
  • MeterSphere | 在接口自动化场景中,设置全局Token方法
  • LVS+keepalived——高可用集群
  • [Vue warn]: Extraneous non-props attributes (class)
  • linux进程间通信之消息队列
  • 操作系统基础操作
  • Gem5系统仿真模拟器之创建gem5——翻译自官网
  • MYSQL进阶——存储引擎
  • 【Python入门教程】OpenCV在图片/视频上添加Logo(水印)
  • 云ES容灾方案
  • “茶叶创新:爆改营销策略,三个月狂销2300万“