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

如何为Spring Actuator动态添加健康路径及配置多路径

配置Spring Boot健康存活组多路径及动态添加方案

一、正确配置多个additional-path的方式

management.endpoint.health.group.liveness.additional-path支持逗号分隔多个路径,格式为server:/path1,server:/path2。你代码里的核心问题是循环中反复调用configMap.put同一个配置项,导致每次都覆盖前一个值,最终只保留最后一条路径。

修复你的代码

将所有路径拼接为逗号分隔的字符串后,一次性存入配置Map:

protected HashMap<String, Object> createConfigMap() {
    var configMap = new HashMap<String, Object>(Map.ofEntries(
            Map.entry("management.endpoints.web.base-path", "/"),
            Map.entry("management.endpoints.web.exposure.include", "health,prometheus,info"),
            Map.entry("management.endpoints.web.path-mapping.prometheus", "metrics"),
            Map.entry("management.endpoint.health.group.readiness.additional-path", "server:/ready"),
            Map.entry("management.health.probes.enabled", "true")));

    // 拼接所有路径为逗号分隔的字符串
    String livenessPaths = _config.getAdditionalHealthPaths()
            .stream()
            .map(path -> String.format("server:%s", path))
            .collect(Collectors.joining(","));
    
    // 非空时才存入配置,避免覆盖默认值
    if (!livenessPaths.isEmpty()) {
        configMap.put("management.endpoint.health.group.liveness.additional-path", livenessPaths);
    }

    return configMap;
}

二、动态添加健康路径(无需@RequestMapping)

如果需要在应用运行时动态添加路径,不需要编写额外的RestController,可通过Spring Boot提供的HealthEndpointGroupCustomizer实现:

动态配置示例

@Component
public class DynamicLivenessPathCustomizer implements HealthEndpointGroupCustomizer {

    private final YourConfigClass _config;

    public DynamicLivenessPathCustomizer(YourConfigClass _config) {
        this._config = _config;
    }

    @Override
    public void customize(HealthEndpointGroupConfigurer configurer) {
        // 仅针对liveness组做配置
        if ("liveness".equals(configurer.getName())) {
            List<String> additionalPaths = _config.getAdditionalHealthPaths()
                    .stream()
                    .map(path -> "server:" + path)
                    .toList();
            configurer.additionalPaths(additionalPaths);
        }
    }
}

这个自定义器会在Spring Boot初始化健康端点组时生效,动态为liveness组添加额外路径,无需预先硬编码路径列表。

三、常见误区说明

  • 不要用分号分隔路径:Spring Boot该配置项仅识别逗号作为多路径分隔符。
  • 避免循环覆盖配置:必须通过拼接字符串或批量设置的方式一次性传入所有路径,禁止循环put同一个配置key。

内容的提问来源于stack exchange,提问作者Jhonny Knaak de Vargas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:04:59