You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在开启全局懒初始化时让Spring Boot Actuator支持JMX访问

问题原因

全局懒初始化spring.main.lazy-initialization=true会让所有Spring管理的Bean默认启用懒加载,Actuator端点对应的Bean在没有被主动调用的情况下不会完成实例化,也就不会注册到JMX MBean服务器中,因此外部监控无法通过JMX访问到对应的端点。

可行解决方案

方案1:使用LazyInitializationExcludeFilter排除指定Bean的懒加载(兼容所有Spring Boot 2.4+版本)

该方案不需要修改全局懒加载规则,只需要将需要通过JMX暴露的Actuator端点排除在懒加载范围外即可,是兼容性最好的实现方式:

import org.springframework.boot.LazyInitializationExcludeFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ActuatorLazyConfig {
    @Bean
    public LazyInitializationExcludeFilter requiredEndpointsExcludeFilter() {
        // 仅排除Health、Metrics两个需要的端点,不影响其他Actuator端点的懒加载逻辑
        return (beanName, beanDefinition, beanType) -> 
            beanType != null && (
                "org.springframework.boot.actuate.health.HealthEndpoint".equals(beanType.getName())
                || "org.springframework.boot.actuate.metrics.MetricsEndpoint".equals(beanType.getName())
            );
    }
}

如果需要所有Actuator端点都提前初始化,可以直接针对@Endpoint注解做统一排除:

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;

@Bean
public LazyInitializationExcludeFilter allActuatorEndpointsExcludeFilter() {
    return LazyInitializationExcludeFilter.forAnnotatedClasses(Endpoint.class);
}

方案2:通过配置属性直接排除(适合Spring Boot 2.6+版本)

如果使用的Spring Boot版本≥2.6,不需要额外编写代码,直接在application.properties中添加配置即可:

spring.main.lazy-initialization.exclude=\
org.springframework.boot.actuate.health.HealthEndpoint,\
org.springframework.boot.actuate.metrics.MetricsEndpoint

注意:请同时确认已配置Actuator的JMX暴露规则,确保目标端点允许通过JMX对外暴露,示例配置如下:

# 仅暴露health、metrics两个端点到JMX
management.endpoints.jmx.exposure.include=health,metrics
# 如需暴露所有Actuator端点可改为 management.endpoints.jmx.exposure.include=*

内容的提问来源于stack exchange,提问作者Jirka Janák

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:54:03