アノテーションインターフェース Profile
プロファイルは、ConfigurableEnvironment.setActiveProfiles(java.lang.String...)
を介してプログラムで、または spring.profiles.active
プロパティを JVM システムプロパティとして、環境変数として、または Web アプリケーションの web.xml
のサーブレットコンテキストパラメーターとして設定することによって宣言的にアクティブ化できる名前付き論理グループです。プロファイルは、@ActiveProfiles
アノテーションを介して統合テストで宣言的にアクティブ化することもできます。
これらのオプションのいずれかを使用してアクティブなプロファイルがない場合は、デフォルトのプロファイルがフォールバックとして有効になります。デフォルトのプロファイルの名前は "default" です。これは、ConfigurableEnvironment.setDefaultProfiles(java.lang.String...)
を介して、または spring.profiles.default
プロパティを JVM システムプロパティ、環境変数、Web アプリケーションの web.xml
のサーブレットコンテキストパラメーターとして設定することによって宣言的に変更できます。
@Profile
アノテーションは、次のいずれかの方法で使用できます。
@Configuration
クラスを含む、@Component
で直接または間接的にアノテーションが付けられたクラスの型レベルのアノテーションとして- カスタムステレオタイプアノテーションを作成するためのメタアノテーションとして
@Bean
メソッドのメソッドレベルのアノテーションとして
@Configuration
クラスが @Profile
でマークされている場合、指定された 1 つ以上のプロファイルがアクティブでない限り、そのクラスに関連付けられているすべての @Bean
メソッドと @Import
アノテーションがバイパスされます。プロファイル文字列には、単純なプロファイル名("p1"
など)またはプロファイル式を含めることができます。プロファイル式を使用すると、"p1 & p2"
などのより複雑なプロファイルロジックを表現できます。サポートされている形式の詳細については、Profiles.of(String...)
を参照してください。
これは、Spring XML での動作に似ています。beans
要素の profile
属性が指定されている場合 (例: <beans profile="p1,p2">
)、少なくともプロファイル 'p1' または 'p2' がアクティブ化されていない限り、beans
要素は解析されません。同様に、@Component
または @Configuration
クラスが @Profile({"p1", "p2"})
でマークされている場合、少なくともプロファイル 'p1' または 'p2' がアクティブ化されていない限り、そのクラスは登録も処理もされません。
特定のプロファイルの前に NOT 演算子(!
)が付いている場合、プロファイルがアクティブでない場合、アノテーション付きコンポーネントが登録されます。たとえば、@Profile({"p1", "!p2"})
が指定された場合、プロファイル 'p1' がアクティブであるか、プロファイル 'p2' がアクティブである場合、登録が行われます。アクティブではありません。
@Profile
アノテーションを省略すると、アクティブなプロファイル(存在する場合)に関係なく登録が行われます。
注 : @Bean
メソッドで @Profile
を使用すると、特別なシナリオが適用される可能性があります。同じ Java メソッド名のオーバーロードされた @Bean
メソッド(コンストラクターのオーバーロードに類似)の場合、@Profile
条件は、すべてのオーバーロードされたメソッドで一貫して宣言する必要があります。条件に一貫性がない場合は、オーバーロードされたメソッドの最初の宣言の条件のみが重要になります。@Profile
を使用して、特定の引数シグネチャーを持つオーバーロードされたメソッドを選択することはできません。同じ Bean のすべてのファクトリメソッド間の解決は、作成時に Spring のコンストラクター解決アルゴリズムに従います。 異なるプロファイル条件で代替 Bean を定義する場合は、同じ bean name
を指す個別の Java メソッド名を使用します。@Configuration
の javadoc の ProfileDatabaseConfig
を参照してください。
XML を介して Spring Bean を定義する場合、<beans>
要素の "profile"
属性を使用できます。詳細については、spring-beans
XSD(バージョン 3.1 以降)のドキュメントを参照してください。
- 導入:
- 3.1
- 作成者:
- Chris Beams, Phillip Webb, Sam Brannen
- 関連事項:
必須定数のサマリー
必須要素
要素の詳細
value
StringSE[] valueアノテーション付きコンポーネントを登録する必要があるプロファイルのセット。