インターフェース DynamicPropertyRegistrar
- 関数インターフェース:
- これは関数インターフェースであるため、ラムダ式またはメソッド参照の割り当てターゲットとして使用できます。
DynamicPropertyRegistry 経由で Environment に追加するために使用されるレジストラ。DynamicPropertyRegistrar インターフェースを実装するテストの ApplicationContext 内の Bean は、シングルトンの事前インスタンス化フェーズの前に自動的に検出され、積極的に初期化されます。また、そのような Bean の accept(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
指定されたレジストリに動的プロパティを登録します。