アノテーションインターフェース Autowired
Inject
EE アノテーションの代替であり、required-vs-optional セマンティクスを追加します。オートワイヤーコンストラクター
特定の Bean クラスの 1 つのコンストラクターのみが、required()
属性を true
に設定してこのアノテーションを宣言できます。これは、Spring Bean として使用されるときにオートワイヤーするコンストラクターを示します。さらに、required
属性が true
に設定されている場合、@Autowired
でアノテーションを付けられるコンストラクターは 1 つだけです。 必須ではない複数のコンストラクターがアノテーションを宣言する場合、オートワイヤーの候補と見なされます。Spring コンテナー内の Bean を一致させることで満たすことができる依存関係の数が最も多いコンストラクターが選択されます。どの候補も満たすことができない場合は、プライマリ / デフォルトコンストラクター(存在する場合)が使用されます。同様に、クラスが複数のコンストラクターを宣言しているが、それらのいずれにも @Autowired
アノテーションが付いていない場合、プライマリ / デフォルトコンストラクター(存在する場合)が使用されます。クラスが最初に単一のコンストラクターのみを宣言する場合、アノテーションが付けられていなくても、常に使用されます。アノテーション付きコンストラクターはパブリックである必要はありません。
オートワイヤーフィールド
Bean の構築直後、設定メソッドが呼び出される前に、フィールドが注入されます。このような構成フィールドはパブリックである必要はありません。
オートワイヤーされたメソッド
構成メソッドには、任意の名前と任意の数の引数を指定できます。これらの各引数は、Spring コンテナー内の一致する Bean と自動接続されます。Bean プロパティ setter メソッドは、事実上、このような一般的な構成メソッドの特殊なケースにすぎません。このような構成メソッドはパブリックである必要はありません。
オートワイヤーされたパラメーター
Spring Framework 5.0 以降、@Autowired
は技術的には個々のメソッドまたはコンストラクターパラメーターで宣言できますが、フレームワークのほとんどの部分ではそのような宣言は無視されます。オートワイヤーパラメーターをアクティブにサポートするコア Spring Framework の唯一の部分は、spring-test
モジュールの JUnit Jupiter サポートです(詳細については、TestContext フレームワークリファレンスドキュメントを参照してください)。
複数の引数と「必須」セマンティクス
複数引数のコンストラクターまたはメソッドの場合、required()
属性はすべての引数に適用できます。個々のパラメーターは、Java-8 スタイルの Optional
SE、または Spring Framework 5.0 以降では @Nullable
または Kotlin の null 以外のパラメーター型として宣言され、基本的な「必須」セマンティクスをオーバーライドします。
オートワイヤー配列、コレクション、マップ
依存関係型 Collection
SE または Map
SE の場合、コンテナーは宣言された値型に一致するすべての Bean をオートワイヤーします。そのような目的のために、マップキーは、対応する Bean 名に解決される型 String
として宣言する必要があります。このようなコンテナーが提供するコレクションは、ターゲットコンポーネントの Ordered
および @Order
の値を考慮してオーダーされます。そうでない場合は、コンテナーでの登録順序に従います。あるいは、単一の一致するターゲット Bean は、一般的に型付けされた Collection
または Map
自体であり、そのように注入されます。
BeanPostProcessor
または BeanFactoryPostProcessor
ではサポートされていません
実際の注入は BeanPostProcessor
を介して実行されることに注意してください。つまり、@Autowired
を使用して BeanPostProcessor
または BeanFactoryPostProcessor
型に参照を注入することはできません。AutowiredAnnotationBeanPostProcessor
クラスの javadoc を参照してください(デフォルトでは、このアノテーションの存在を確認します)。
- 導入:
- 2.5
- 作成者:
- Juergen Hoeller, Mark Fisher, Sam Brannen
- 関連事項:
オプション要素のサマリー
要素の詳細
required
boolean requiredアノテーション付きの依存関係が必要かどうかを宣言します。デフォルトは
true
です。- デフォルト:
- true