インターフェース 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
- 関連事項:
メソッドのサマリー
メソッドの詳細
accept
指定されたレジストリに動的プロパティを登録します。