1. 概述

本文将介绍如何定制Spring Boot Actuator中的/info接口。如果你对Actuator还不熟悉,建议先参考相关文档了解基础配置。

2. 在/info中添加静态属性

对于应用名称、版本号这类长期不变的静态信息,直接在application.properties中配置最简单粗暴:

## 配置info接口
info.app.name=Spring示例应用
info.app.description=这是我的第一个Spring Boot应用
info.app.version=1.0.0

✅ 配置完成后,Spring会自动将所有info前缀的属性暴露到/info接口:

{
  "app": {
    "description": "这是我的第一个Spring Boot应用",
    "version": "1.0.0",
    "name": "Spring示例应用"
  }
}

3. 在/info中暴露环境变量

需要动态获取环境变量时?直接在配置中使用占位符即可:

info.java-vendor = ${java.specification.vendor}

这样就能在/info接口中看到Java厂商信息:

{
  "app": {
    "description": "这是我的第一个Spring Boot应用",
    "version": "1.0.0",
    "name": "Spring示例应用"
  },
  "java-vendor": "Oracle Corporation"
}

⚠️ 注意:虽然所有环境变量在/env接口中已存在,但这种方式能快速暴露关键变量。

4. 从持久层获取自定义数据

更复杂的场景需要从数据库获取数据?实现InfoContributor接口就够:

@Component
public class TotalUsersInfoContributor implements InfoContributor {

    @Autowired
    UserRepository userRepository;

    @Override
    public void contribute(Info.Builder builder) {
        Map<String, Integer> userDetails = new HashMap<>();
        userDetails.put("active", userRepository.countByStatus(1));
        userDetails.put("inactive", userRepository.countByStatus(0));

        builder.withDetail("users", userDetails);
    }
}

关键点:

  • 类必须标注@Component
  • 通过Info.Builder添加自定义数据

最终接口输出:

{
  ...其他info数据...,
  "users": {
    "inactive": 2,
    "active": 3
  }
}

5. 总结

本文介绍了三种自定义/info接口数据的方式:

  1. 静态属性配置
  2. 环境变量绑定
  3. 持久层数据注入

完整示例代码可参考GitHub仓库


原始标题:Custom Information in Spring Boot Info Endpoint