アノテーションインターフェース ConfigurationPropertiesSource


@TargetSE(TYPESE) @RetentionSE(RUNTIMESE) @DocumentedSE public @interface ConfigurationPropertiesSource
アノテーションが付けられた型が構成プロパティメタデータのソースであることを示します。

このアノテーションは実際のバインディングプロセスには影響しませんが、型の完全なメタデータを生成するために spring-boot-configuration-processor にヒントとして機能します。

通常、このアノテーションは、参照先の @ConfigurationProperties クラスとは異なるモジュールにある型にのみ必要です。両方の型が同じモジュールにある場合、ソースが利用可能であれば、アノテーションプロセッサーは完全なメタデータを自動的に検出できます。

モジュールの外部にある型のメタデータが必要な場合は、このアノテーションを使用します。

  1. @NestedConfigurationProperty でアノテーションされたネストされた型
  2. @ConfigurationProperties アノテーション型が拡張する基本クラス

以下の例では、ServerProperties はモジュール "A" にあり、Host はモジュール "B" にあります。

@ConfigurationProperties("example.server")
class ServerProperties {

    @NestedConfigurationProperty
    private final Host host = new Host();

    public Host getHost() { ... }

    // Other properties, getter, setter.

}

Host のプロパティは型に基づいて検出されますが、説明とデフォルト値は検出されません。これを修正するには、モジュール "B" に spring-boot-configuration-processor がまだ存在しない場合は追加し、Host を以下のように更新します。

@ConfigurationPropertiesSource
class Host {

    /**
     * URL to use.
     */
    private String url = "https://example.com";

    // Other properties, getter, setter.

}

同様に、@ConfigurationProperties アノテーション付き型が拡張する基底クラスのメタデータも検出できます。次の例を参照してください。

@ConfigurationProperties("example.client.github")
class GitHubClientProperties extends AbstractClientProperties {

    // Additional properties, getter, setter.

}

ネストされた型と同様に、@ConfigurationPropertiesSource を AbstractClientProperties に追加し、spring-boot-configuration-processor をそのモジュールに追加すると、完全なメタデータが生成されます。

導入:
4.0.0
作成者:
Stephane Nicoll