Benutzerdefinierte Informationen im Spring Boot Info-Endpunkt

Benutzerdefinierte Informationen im Spring Boot Info Endpoint

1. Überblick

In diesem kurzen Artikel erfahren Sie, wie Sie den Endpunkt/infoder Spring Boot Actuators anpassen.

Bitterefer to this article, um mehr über Aktuatoren in Boot und deren Konfiguration zu erfahren.

2. Statische Eigenschaften in / info

Wenn wir statische Informationen wie den Namen der Anwendung oder eine Version haben, die sich lange Zeit nicht ändert, ist es eine gute Idee, diese Details in die Dateiapplication.propertiesaufzunehmen:

## 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

Das ist alles, was wir tun müssen, um diese Daten auf dem Endpunkt von/infoverfügbar zu machen. Spring fügt automatisch alle Eigenschaften mit dem Präfixinfo zum Endpunkt von/infohinzu:

{
  "app": {
    "description": "This is my first spring boot application",
    "version": "1.0.0",
    "name": "Spring Sample Application"
  }
}

3. Umgebungsvariablen in / info

Lassen Sie uns nun eineEnvironment-Variable in unserem/info-Endpunkt verfügbar machen:

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

Dadurch wird der Java-Anbieter dem Endpunkt von/infoausgesetzt:

{
  "app": {
    "description": "This is my first spring boot application",
    "version": "1.0.0",
    "name": "Spring Sample Application"
  },
  "java-vendor": "Oracle Corporation",
}

Bitte beachten Sie, dass alle Umgebungsvariablen bereits auf dem Endpunkt von/envverfügbar sind. Dasselbe kann jedoch auch schnell auf dem Endpunkt von/infoangezeigt werden.

4. Benutzerdefinierte Daten aus der Persistenzschicht

Gehen wir jetzt noch einen Schritt weiter und legen einige nützliche Daten aus dem Persistenzspeicher offen.

Um dies zu erreichen, müssen wir die Schnittstelle vonInfoContributorimplementieren und die Methode voncontribute()überschreiben:

@Component
public class TotalUsersInfoContributor implements InfoContributor {

    @Autowired
    UserRepository userRepository;

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

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

Das erste ist, dass wir die implementierende Klasse als@Component markieren müssen. Fügen Sie dann die erforderlichen Details zur Instanz vonInfo.Builderhinzu, die für die Methode voncontribute()bereitgestellt wird.

Dieser Ansatz bietet uns viel Flexibilität hinsichtlich dessen, was wir dem Endpunkt unseres/infoaussetzen können:

{
  ...other /info data...,
  ...
  "users": {
    "inactive": 2,
    "active": 3
  }
}

5. Fazit

In diesem Tutorial haben wir uns verschiedene Möglichkeiten angesehen, um benutzerdefinierte Daten zum Endpunkt von/infohinzuzufügen.

Beachten Sie, dass wir auch diskutieren, wiegit information zum Endpunkt von/infohinzugefügt werden.

Wie immer finden Sie den vollständigen Quellcode dieses Artikels inover on GitHub.