Spring Boot 3.2.5服务/actuator/health返回404排查求助
进一步排查方向
检查WebMvc/WebFlux自动配置是否被禁用
- 排查代码中是否存在
@EnableWebMvc或@EnableWebFlux注解,SpringBoot 3.x中这类注解会完全接管MVC配置,可能覆盖Actuator端点的注册逻辑,对比正常服务确认是否有差异。 - 查看启动日志,搜索包含
Excluding auto-configuration class的行,确认WebMvcAutoConfiguration或WebFluxAutoConfiguration是否被排除。
- 排查代码中是否存在
验证Actuator端点相关Bean的状态
- 启动服务后,通过JMX或临时代码(如
applicationContext.getBean(HealthEndpoint.class))检查HealthEndpoint、HealthEndpointWebExtension等Bean是否存在。若抛出NoSuchBeanDefinitionException,说明端点Bean未正确初始化。 - 借助Spring Boot Admin(若已部署)查看Bean列表,确认Actuator相关组件的状态。
- 启动服务后,通过JMX或临时代码(如
排查自定义路径匹配配置的干扰
- 检查是否存在自定义
WebMvcConfigurer或WebFluxConfigurer实现,尤其是重写configurePathMatch方法的逻辑,这类自定义配置可能导致Actuator路径无法被匹配。 - 确认是否有自定义的
HandlerMapping或HandlerAdapterBean,这些组件可能干扰Actuator端点的请求映射流程。
- 检查是否存在自定义
分析端点注册的DEBUG日志
- 开启
org.springframework.boot.actuate.endpoint.web包的DEBUG日志,查看是否有Registered endpoint '/actuator/health'这类端点注册记录。若无相关日志,说明端点未完成注册。 - 同时监控
org.springframework.context.annotation包的日志,确认HealthEndpointWebExtensionConfiguration是否被正确加载,以及相关Bean是否成功创建。
- 开启
深度排查依赖细节
- 用
mvn dependency:tree(Maven)或./gradlew dependencies(Gradle)生成依赖树,检查spring-boot-starter-actuator是否完整引入,是否有其他依赖排除了Actuator的必要组件。 - 确认
spring-boot-starter-web或spring-boot-starter-webflux依赖是否存在,Actuator的Web端点依赖于这些Web starter组件。
- 用
构建最小化复现工程
- 创建仅包含
spring-boot-starter-actuator和spring-boot-starter-web的Spring Boot 3.2.5工程,配置相同的management参数,验证/actuator/health是否正常。若正常,逐步添加原服务的依赖、配置、代码,每次添加后测试,定位问题根源。
- 创建仅包含
核对Spring Boot 3.2.x的兼容性变更
- 查阅Spring Boot 3.2.x官方发布说明,重点关注Actuator相关的变更,比如端点路径规则、自动配置逻辑调整。例如3.2版本是否对Actuator路径匹配做了调整,是否需要额外配置
management.endpoints.web.path-mapping或management.base-path。
- 查阅Spring Boot 3.2.x官方发布说明,重点关注Actuator相关的变更,比如端点路径规则、自动配置逻辑调整。例如3.2版本是否对Actuator路径匹配做了调整,是否需要额外配置
内容的提问来源于stack exchange,提问作者David M. Karr
相关产品推荐
相关产品推荐

