Spring Boot升级至2.7.0后找不到MetricsEndpoint合格Bean问题
问题根因
从Spring Boot 2.2版本开始,Actuator模块重构了端点的自动装配逻辑,你从2.1.18升级到2.7.0跨了多个版本迭代,MetricsEndpoint不再是引入spring-boot-starter-actuator就无条件注册的Bean,它的实例化新增了明确的生效条件,当前环境不满足任意一个条件时,容器就不会创建该类型的Bean,最终抛出你看到的注入失败异常。
常见触发场景有三类:
- 依赖不满足:
MetricsEndpoint对应的自动配置类MetricsEndpointAutoConfiguration带有@ConditionalOnClass(MeterRegistry.class)条件,要求类路径下必须存在Micrometer核心包的MeterRegistry类。如果引入actuator starter时手动排除了传递依赖的micrometer-core,自动配置就会直接跳过,不会注册MetricsEndpoint的Bean。2.1.x版本没有加这个类存在的校验逻辑,所以升级前不会触发该问题。 - 端点被主动禁用:
MetricsEndpoint上标注了@ConditionalOnEnabledEndpoint条件,只有metrics端点处于启用状态时才会初始化Bean。如果你在配置中设置了management.endpoints.enabled-by-default=false全局关闭所有Actuator端点,又没有单独配置management.endpoint.metrics.enabled=true开启metrics端点,就会导致Bean不创建。 - 自动配置被排除:如果在启动类
@SpringBootApplication注解的exclude参数、或者配置文件spring.autoconfigure.exclude配置项中,手动排除了MetricsEndpointAutoConfiguration或MetricsAutoConfiguration,也会导致该Bean无法被注册到容器。
排查修复步骤
- 先检查依赖配置:确认
spring-boot-starter-actuator的依赖规则中没有排除micrometer-core传递依赖,正常引入actuator starter时会自动带入这个包,不需要额外手动引入,如果存在对应的排除规则直接删除即可。 - 检查Actuator相关配置:确认没有主动关闭metrics端点,如果全局关闭了所有Actuator端点,需要补充配置单独开启metrics端点,配置示例:
management: endpoint: metrics: enabled: true
- 检查自动配置排除列表:遍历启动类注解、全局配置中的自动配置排除项,删除和Metrics端点、Micrometer指标自动装配相关的排除规则。
- 以上步骤排查完仍有问题的话,启动应用时加上
--debug参数打印自动配置报告,在报告中搜索MetricsEndpointAutoConfiguration,会明确标注该自动配置类未生效的具体原因,对应调整即可。
内容的提问来源于stack exchange,提问作者Rodriguez
相关产品推荐
相关产品推荐

