如何将spring-boot-actuator从1.5.17版本迁移至2.7.3版本?
Spring Boot Actuator 1.5.17 迁移至 2.7.3 指南及类替换方案
核心重构说明
Spring Boot 2.x 对 Actuator 模块做了全面重构,废弃了1.x版本中的大量端点相关类,改用注解驱动的端点模型,并简化了自动配置逻辑。以下是你提到的废弃类的具体替代方案及代码改造方式:
废弃类替代方案
1. EndpointAutoConfiguration
2.x版本中无需手动导入该配置,Spring Boot的自动配置机制会自动加载Actuator相关配置。直接移除@Import(EndpointAutoConfiguration.class)即可。
2. EndpointHandlerMapping
2.x不再需要手动创建该Bean,Web端点的映射由Actuator自动配置处理。如果需要自定义端点路径或行为,可通过配置文件调整:
- 修改端点基础路径:
management.endpoints.web.base-path=/actuator(默认值) - 自定义端点暴露规则:通过
management.endpoints.web.exposure.include/exclude配置
3. MvcEndpoint
该接口已被废弃,2.x中使用注解方式定义自定义端点:
- 使用
@Endpoint(id="自定义ID")标注类 - 用
@ReadOperation(GET请求)、@WriteOperation(POST请求)等注解标注端点方法
4. HealthMvcEndpoint & HealthEndpoint
这两个类已被整合到Actuator的自动配置中,默认会暴露/actuator/health端点。如果需要自定义健康检查逻辑,实现HealthIndicator接口即可,无需手动创建这两个Bean。
改造后的代码示例
pom.xml
建议使用Actuator Starter依赖(包含必要的自动配置和依赖):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>2.7.3</version> </dependency>
SpringConfig.java
移除所有旧的端点相关Bean和导入,若需自定义健康检查可添加HealthIndicator:
@Configuration @ComponentScan("com.bael.package.food") public class SpringConfig { // 示例:自定义健康检查指示器 @Bean public HealthIndicator customHealthIndicator() { return () -> Health.up() .withDetail("service-status", "running") .withDetail("custom-check", "passed") .build(); } }
关键配置补充
在application.properties或application.yml中添加Actuator配置,控制端点暴露和行为:
# 暴露所有端点(生产环境建议按需配置,避免暴露敏感端点) management.endpoints.web.exposure.include=* # 显示健康检查的详细信息 management.endpoint.health.show-details=always # 修改端点基础路径(可选,默认/actuator) # management.endpoints.web.base-path=/custom-actuator
注意事项
- 端点路径变化:1.x的
/health在2.x默认变为/actuator/health,可通过配置调整 - 权限控制:2.x默认仅暴露
health和info端点,需手动配置暴露其他端点 - 敏感端点保护:生产环境需对
env、beans等敏感端点添加权限控制,避免信息泄露
内容的提问来源于stack exchange,提问作者Pep
相关产品推荐
相关产品推荐

