知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot Info 端點中的自定義信息

Spring Boot
HongKong
4
02:37 PM · Dec 06 ,2025

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 端點中。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.