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

在通用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@Overridepublic 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.lryc.cn/news/233923.html

相关文章:

  • Seaborn 回归(Regression)及矩阵(Matrix)绘图
  • nginx学习(1)
  • CLEARTEXT communication to XX not permitted by network security policy 报错
  • 91.移动零(力扣)
  • PatchMatchNet笔记
  • 实时人眼追踪、内置3D引擎,联想ThinkVision裸眼3D显示器创新四大应用场景
  • SELinux零知识学习十四、SELinux策略语言之客体类别和许可(8)
  • Unity——URP相机详解
  • CRUD-SQL
  • 【C语言 | 数组】C语言数组详解(经典,超详细)
  • 第三十三节——组合式API生命周期
  • 【Linux】Alibaba Cloud Linux 3 安装 PHP8.1
  • 【容器化】Kubernetes(k8s)
  • stm32 HSUSB
  • C# String.Trim 方法
  • <Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 4》(8)
  • RT-Thread STM32F407 PWM
  • idea中把spring boot项目打成jar包
  • levelDB之基础数据结构-Slice
  • 上位机模块之通用重写相机类
  • 机器人导航+OPENCV透视变换示例代码
  • KofamScan-KEGG官方推荐的使用系同源和隐马尔可夫模型进行KO注释
  • 代码随想录算法训练营第五十五天丨 动态规划part16
  • 【Linux】kernel与应用消息队列的一种设计
  • 我们常说的网络资产,具体是如何定义的?
  • WPF中可冻结对象
  • 【人工智能实验】A*算法求解8数码问题 golang
  • Kafka学习笔记(二)
  • Typora for Mac:打造全新文本编辑体验
  • TikTok与媒体素养:如何辨别虚假信息?