Spring Boot Infoエンドポイントのカスタム情報

Spring Boot Infoエンドポイントのカスタム情報

1. 概要

この簡単な記事では、Spring Boot Actuatorsの/infoエンドポイントをカスタマイズする方法を見ていきます。

Bootのアクチュエータとその設定方法の詳細については、refer to this articleを参照してください。

2. / infoの静的プロパティ

アプリケーションの名前やバージョンなどの静的な情報が長期間変更されない場合は、その詳細をapplication.propertiesファイルに追加することをお勧めします。

## 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の環境変数

次に、/infoエンドポイントでEnvironment変数を公開しましょう。

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

これにより、Javaベンダーが/infoエンドポイントに公開されます。

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

すべての環境変数は、/envエンドポイントですでに使用可能であることに注意してください。 ただし、同じことが/infoエンドポイントでもすぐに公開される可能性があります。

4. 永続層からのカスタムデータ

それでは、さらに一歩進んで、永続ストレージからいくつかの有用なデータを公開しましょう。

これを実現するには、InfoContributorインターフェイスを実装し、contribute()メソッドをオーバーライドする必要があります。

@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);
    }
}

まず、実装クラスを@Componentとしてマークする必要があります。 次に、contribute()メソッドに提供されるInfo.Builderインスタンスに必要な詳細を追加します。

このアプローチは、/infoエンドポイントに公開できるものに関して多くの柔軟性を提供します。

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

5. 結論

このチュートリアルでは、/infoエンドポイントにカスタムデータを追加するさまざまな方法について説明しました。

/infoエンドポイントにgit informationを追加する方法についても説明していることに注意してください。

いつものように、この記事の完全なソースコードはover on GitHubにあります。