インターフェース DynamicPropertyRegistrar

関数インターフェース:
これは関数インターフェースであるため、ラムダ式またはメソッド参照の割り当てターゲットとして使用できます。

@FunctionalInterfaceSE public interface DynamicPropertyRegistrar
動的に解決された値を持つプロパティを DynamicPropertyRegistry 経由で Environment に追加するために使用されるレジストラ。

DynamicPropertyRegistrar インターフェースを実装するテストの ApplicationContext 内の Bean は、シングルトンの事前インスタンス化フェーズの前に自動的に検出され、積極的に初期化されます。また、そのような Bean の accept(org.springframework.test.context.DynamicPropertyRegistry) メソッドは、レジストラに代わって実際の動的プロパティ登録を実行する DynamicPropertyRegistry で呼び出されます。

これは、統合テストクラスで @DynamicPropertySource メソッドを実装する代わりになるもので、@DynamicPropertySource メソッドでは不可能な追加のユースケースをサポートします。例: DynamicPropertyRegistrar は ApplicationContext 内の Bean 自体であるため、コンテキスト内の他の Bean と対話し、それらの Bean から取得される動的プロパティを登録できます。ただし、他の Bean との対話により、それらの他の Bean とその依存関係が積極的に初期化されることに注意してください。

優先順位

動的プロパティは、@TestPropertySource から読み込まれたプロパティ、オペレーティングシステムの環境、Java システムプロパティ、アプリケーションによって宣言的に @PropertySource を使用して、またはプログラムで追加されたプロパティソースよりも優先されます。動的プロパティを使用して、@TestPropertySource、システムプロパティソース、アプリケーションプロパティソースを介してロードされたプロパティを選択的にオーバーライドできます。

サンプル

次の例は、ApiServer Bean の動的プロパティを登録するラムダ式として DynamicPropertyRegistrar を実装する方法を示しています。ApplicationContext 内の他の Bean は、たとえば @Value("${api.url}") を介して ApiServer Bean から動的に取得される api.url プロパティにアクセスできます。

 @Configuration
 class TestConfig {

     @Bean
     ApiServer apiServer() {
         return new ApiServer();
     }

     @Bean
     DynamicPropertyRegistrar apiPropertiesRegistrar(ApiServer apiServer) {
         return registry -> registry.add("api.url", apiServer::getUrl);
     }

 }
導入:
6.2
作成者:
Sam Brannen
関連事項:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    指定されたレジストリに動的プロパティを登録します。
  • メソッドの詳細

    • accept

      void accept(DynamicPropertyRegistry registry)
      指定されたレジストリに動的プロパティを登録します。