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


@TargetSE({TYPESE,METHODSE}) @RetentionSE(RUNTIMESE) @DocumentedSE @Conditional(org.springframework.context.annotation.ProfileCondition.class) public @interface Profile
1 つ以上の指定されたプロファイルがアクティブな場合、コンポーネントは登録に適格であることを示します。

プロファイルは、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
      アノテーション付きコンポーネントを登録する必要があるプロファイルのセット。