
spring boot升级至2.7.5后,`/actuator/health` 接口默认返回`"code":"down"`,主因是健康检查细节未启用且部分依赖(如springfox)引发配置冲突;通过启用健康详情并合理配置探测策略即可修复。
在 Spring Boot 2.7+ 版本中,Actuator 的 /actuator/health 端点默认采用 SHOW_HEALTH_DETAILS_WHEN_AUTHORIZED 策略(即仅当用户认证且具备 ACTUATOR 权限时才显示详细健康状态),否则即使所有组件健康,响应体中 status.code 也可能被强制设为 "DOWN",同时 description 为空——这并非实际服务异常,而是安全策略导致的展示限制。
要解决该问题,需显式配置健康端点的可见性策略。最直接有效的方式是在 application.properties 中添加:
management.endpoint.health.show-details=always
或在 application.yml 中等效配置为:
management:
endpoint:
health:
show-details: always✅ 此配置将始终暴露健康详情(包括各组件状态、原因等),使 status.code 准确反映真实运行状况(如 "UP" 或 "DOWN" 并附带具体原因)。
⚠️ 注意事项:
- show-details=always 适用于开发与受信内网环境;生产环境若需兼顾安全性,建议改为 show-details=when_authorized 并配合 Spring Security 配置 /actuator/health 的访问权限;
- 若项目仍集成已停更的 Springfox(如 3.0.0),需确保其与 Spring Boot 2.7 兼容:除 Stack Overflow 提到的 DocumentationPluginsBootstrapper Bean 替代方案外,还应移除 @EnableSwagger2,改用 springdoc-openapi-ui(推荐)以避免健康检查被 Swagger 相关 HealthIndicator 异常拖垮;
- 可进一步细化健康检查行为,例如禁用特定探针(如数据库健康检查):
management.health.db.show-details=never
总结:"DOWN" 响应多为配置缺失所致,而非服务故障。优先启用健康详情,再结合依赖兼容性治理(如迁出 Springfox),即可快速恢复 /actuator/health 的准确语义与可观测性。










