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


Spring の依存性注入機能によってオートワイヤーされるように、コンストラクター、フィールド、setter メソッド、構成メソッドをマークします。これは、JSR-330 InjectEE アノテーションの代替であり、required-vs-optional セマンティクスを追加します。

オートワイヤーコンストラクター

指定された Bean クラスの 1 つのコンストラクターのみが、true に設定された required() 属性を使用してこのアノテーションを宣言できます。 これは、Spring Bean として使用されるときにコンストラクターがオートワイヤーされることを示します。さらに、required 属性が true に設定されている場合、単一のコンストラクターのみ @Autowired のアノテーションを付けることができます。複数の必須ではないコンストラクターがアノテーションを宣言した場合、オートワイヤーの候補とみなされます。Spring コンテナー内の Bean を照合することで満たせる依存関係の数が最も多いコンストラクターが選択されます。どの候補も満たせない場合は、プライマリ / デフォルトコンストラクター (存在する場合) が使用されます。同様に、クラスで複数のコンストラクターが宣言されているが、そのどれにも @Autowired アノテーションが付けられていない場合は、プライマリ / デフォルトコンストラクター (存在する場合) が使用されます。クラスが最初に 1 つのコンストラクターのみを宣言している場合は、アノテーションが付けられていない場合でも、常にそのコンストラクターが使用されます。アノテーション付きコンストラクターはパブリックである必要はありません。

オートワイヤーフィールド

Bean の構築直後、設定メソッドが呼び出される前に、フィールドが注入されます。このような構成フィールドはパブリックである必要はありません。

オートワイヤーされたメソッド

構成メソッドには、任意の名前と任意の数の引数を指定できます。これらの各引数は、Spring コンテナー内の一致する Bean と自動接続されます。Bean プロパティ setter メソッドは、事実上、このような一般的な構成メソッドの特殊なケースにすぎません。このような構成メソッドはパブリックである必要はありません。

オートワイヤーされたパラメーター

Spring Framework 5.0 以降、@Autowired は技術的には個々のメソッドまたはコンストラクターパラメーターで宣言できますが、フレームワークのほとんどの部分ではそのような宣言は無視されます。オートワイヤーパラメーターをアクティブにサポートするコア Spring Framework の唯一の部分は、spring-test モジュールの JUnit Jupiter サポートです(詳細については、TestContext フレームワークリファレンスドキュメントを参照してください)。

複数の引数と「必須」セマンティクス

複数引数のコンストラクターまたはメソッドの場合、required() 属性はすべての引数に適用できます。個々のパラメーターは、Java-8 スタイルの OptionalSE、または Spring Framework 5.0 以降では @Nullable または Kotlin の null 以外のパラメーター型として宣言され、基本的な「必須」セマンティクスをオーバーライドします。

オートワイヤー配列、コレクション、マップ

依存関係型 CollectionSE または MapSE の場合、コンテナーは宣言された値型に一致するすべての Bean をオートワイヤーします。そのような目的のために、マップキーは、対応する Bean 名に解決される型 String として宣言する必要があります。このようなコンテナーが提供するコレクションは、ターゲットコンポーネントの Ordered および @Order の値を考慮してオーダーされます。そうでない場合は、コンテナーでの登録順序に従います。あるいは、単一の一致するターゲット Bean は、一般的に型付けされた Collection または Map 自体であり、そのように注入されます。

BeanPostProcessor または BeanFactoryPostProcessor ではサポートされていません

実際の注入は BeanPostProcessor を介して実行されることに注意してください。つまり、@Autowired を使用して BeanPostProcessor または BeanFactoryPostProcessor 型に参照を注入することはできませんAutowiredAnnotationBeanPostProcessor クラスの javadoc を参照してください(デフォルトでは、このアノテーションの存在を確認します)。

導入:
2.5
作成者:
Juergen Hoeller, Mark Fisher, Sam Brannen
関連事項:
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    boolean
    アノテーション付きの依存関係が必要かどうかを宣言します。
  • 要素の詳細

    • required

      boolean required
      アノテーション付きの依存関係が必要かどうかを宣言します。

      デフォルトは true です。

      デフォルト:
      true