@TargetSE(valueSE={CONSTRUCTORSE,METHODSE,PARAMETERSE,FIELDSE,ANNOTATION_TYPESE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface Autowired
Inject
EE アノテーションの代替であり、required-vs-optional セマンティクスを追加します。 任意の所与の Bean クラスの唯一のコンストラクターは Spring Bean として使用される場合 autowire にコンストラクターを示す true
に 'required' 属性セットでこのアノテーションを宣言することができます。さらに、'required' 属性が true
に設定されている場合、単一のコンストラクターのみに @Autowired
のアノテーションを付けることができます。複数の不要なコンストラクターがアノテーションを宣言する場合、オートワイヤーの候補と見なされます。Spring コンテナー内の Bean を一致させることで満たすことができる依存関係の数が最も多いコンストラクターが選択されます。どの候補も満たすことができない場合、プライマリ / デフォルトコンストラクター(存在する場合)が使用されます。クラスが最初に単一のコンストラクターのみを宣言する場合、アノテーションが付けられていなくても、常に使用されます。アノテーション付きコンストラクターはパブリックである必要はありません。
Bean の構築直後、設定メソッドが呼び出される前に、フィールドが注入されます。このような構成フィールドはパブリックである必要はありません。
構成メソッドには、任意の名前と任意の数の引数を指定できます。これらの各引数は、Spring コンテナー内の一致する Bean と自動接続されます。Bean プロパティ setter メソッドは、事実上、このような一般的な構成メソッドの特殊なケースにすぎません。このような構成メソッドはパブリックである必要はありません。
複数引数のコンストラクターまたはメソッドの場合、'required' 属性はすべての引数に適用できます。個々のパラメーターは、Java-8 スタイルの Optional
SE として、または Spring Framework 5.0 として、@Nullable
または Kotlin の null 以外のパラメーター型として宣言され、必要な基本セマンティクスをオーバーライドします。
Collection
SE または Map
SE 依存関係型の場合、コンテナーは宣言された値型に一致するすべての Bean をオートワイヤーします。そのような目的のために、対応する Bean 名に解決される文字列型としてマップキーを宣言する必要があります。このようなコンテナー提供のコレクションは、ターゲットコンポーネントの Ordered
/Order
値を考慮して順序付けされます。それ以外の場合は、コンテナーでの登録順序に従います。あるいは、単一の一致するターゲット Bean は、一般的に型指定された Collection
または Map
自体であり、そのように注入されます。
実際の注入は BeanPostProcessor
を介して実行されることに注意してください。つまり、@Autowired
を使用して BeanPostProcessor
または BeanFactoryPostProcessor
型に参照を注入することはできません。AutowiredAnnotationBeanPostProcessor
クラスの javadoc を参照してください(デフォルトでは、このアノテーションの存在を確認します)。
AutowiredAnnotationBeanPostProcessor
, Qualifier
, Value
修飾子と型 | オプションの要素と説明 |
---|---|
boolean | required アノテーション付きの依存関係が必要かどうかを宣言します。 |