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

Spring Boot不删除Actuator如何自定义开发/env端点?

Spring Boot 1.5.9 Actuator 自定义/env端点解决方案

核心实现思路

Spring Boot 1.5.x版本中Actuator端点以Bean形式注册到上下文,无需删除整套Actuator依赖即可覆盖或新增同名端点,两种稳定实现方案如下:

方案1:直接覆盖原生EnvEndpoint(推荐,无500报错风险)

无需手动禁用原生端点,通过@Primary注解让Spring优先加载你的自定义实现即可:

  • 自定义类继承原生EnvironmentEndpoint,重写invoke()方法实现自定义返回逻辑
  • 类上添加@Component+@Primary注解完成注册
    示例代码:
import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;

@Component
@Primary
public class CustomEnvEndpoint extends EnvironmentEndpoint {

    public CustomEnvEndpoint(Environment environment) {
        super(environment);
    }

    @Override
    public Map<String, Object> invoke() {
        Map<String, Object> result = new HashMap<>();
        // 自定义返回逻辑,若需要保留部分原生数据可先调用super.invoke()做过滤修改
        result.put("code", 200);
        result.put("customEnvInfo", "你需要返回的自定义环境信息");
        return result;
    }
}

方案2:完全禁用原生端点后注册自定义同名端点

如果需要彻底关闭原生端点逻辑,可按以下步骤操作:

  1. 在application.properties添加以下配置,避免禁用原生端点后返回500:
    # 禁用原生/env端点
    endpoints.env.enabled=false
    # 关闭端点不存在时的异常抛出逻辑
    management.security.enabled=false # 可根据实际安全规则调整
    
  2. 注册自定义端点,指定id为env即可匹配/env访问路径:
import org.springframework.boot.actuate.endpoint.AbstractEndpoint;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;

@Component
public class CustomEnvEndpoint extends AbstractEndpoint<Map<String, Object>> {
    // 构造方法指定端点id为env,默认非敏感
    public CustomEnvEndpoint() {
        super("env", false);
    }

    @Override
    public Map<String, Object> invoke() {
        Map<String, Object> result = new HashMap<>();
        result.put("msg", "自定义/env端点响应");
        return result;
    }
}

注意:如果配置过management.context-path参数,访问时需要在/env前加上配置的前缀路径。


原配置返回500的原因

仅设置endpoints.env.enabled=false时,Spring会尝试查找/env对应的端点处理器,找不到时会抛出未处理的端点不存在异常,默认没有对应异常的HTTP状态码映射,所以返回500而非404,上述两种方案都可以规避这个问题。

内容的提问来源于stack exchange,提问作者Jorge Garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:12:01