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
接口数据的方式:
- 静态属性配置
- 环境变量绑定
- 持久层数据注入
完整示例代码可参考GitHub仓库。