1. 概述
在本文檔中,我們將探討如何自定義 Spring Boot Actuator 的 info</em/> 端點。
請參閲本文檔以瞭解更多關於 Boot 中的 Actuator 以及如何配置它們的信息。
2. /info 中的靜態屬性
如果存在一些不經常變化的信息,例如應用程序的名稱或版本號,那麼將這些信息添加到我們的 <em >application.properties</em > 文件中是一個好主意:
## Configuring info endpoint
info.app.name=Spring Sample Application
info.app.description=This is my first spring boot application
info.app.version=1.0.0這是我們需要做的一切,以使該數據在 /info 端點可用。Spring 將自動將所有以 info 為前綴的屬性添加到 /info 端點:
{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "Spring Sample Application"
}
}3. 環境變量在 /info 中
現在,我們將暴露一個 Environment 變量到我們的 /info 端點:
info.java-vendor = ${java.specification.vendor}這將暴露 Java 供應商到我們的 信息端點:
{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "Spring Sample Application"
},
"java-vendor": "Oracle Corporation",
}請注意,所有環境變量均已在 /env 端點上提供。 同樣,相同的環境變量也可以快速地在 /info 端點上暴露。
4. 自定義數據從持久化層
現在,我們進一步一步,將一些有用的數據暴露到持久化存儲中。
要實現這一點,我們需要實現 <em >InfoContributor</em> 接口並覆蓋 <em >contribute()</em> 方法:
@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 實例中,該實例傳遞給 contribute() 方法。
這種方法為我們提供了很大的靈活性,可以控制哪些信息暴露到 /info 端點上:
{
...other /info data...,
...
"users": {
"inactive": 2,
"active": 3
}
}5. 結論
在本教程中,我們探討了如何將自定義數據添加到我們的 /info 端點的方法。
請注意,我們還討論瞭如何將 Git 信息添加到 /info 端點中。