ホームページ >Java >&#&チュートリアル >Spring の @Autowired アノテーションは依存関係の注入にどのように機能しますか?
Spring @Autowired の使用法を理解する
あなたの質問では、Spring の @Autowired アノテーションの使用法を理解するのが困難でした。ここでは、クエリに対処するための包括的な説明を示します。
Autowired アノテーションとそのアプリケーション
@Autowired アノテーションは、Bean の依存関係を作成するプロセスを自動化し、手動構成の必要性を排除します。 XML ファイルで。これは、注入が必要なプロパティ、コンストラクター パラメーター、およびセッター メソッドを識別し、適切な Bean を自動的に注入します。
例 1 では、@Autowired アノテーションが setMovieFinder メソッドに適用され、Spring がMovieFinder インターフェイスのインスタンスを movieFinder プロパティに挿入する必要があります。
Example 2 では、@Autowired アノテーションが prepare メソッドで使用され、Spring が 2 つの Bean (MovieCatalog と CustomerPreferenceDao) を対応するプロパティに注入する必要があることを暗示しています。
Bean のあいまいさの解決
複数の Bean が同じインターフェースを実装する場合、Spring は修飾子のアノテーションを使用してどの Bean を注入するかを決定します。あなたの例では、次のように修飾子の注釈を追加すると、Bean のあいまいさが解決されます。
@Autowired @Qualifier("redBean") private Color color;
これは、redBean Bean を color プロパティに注入する必要があることを指定します。それに応じて XML ファイルで Bean を定義できます。
<bean>
Bean スキャンの構成
Bean として管理する必要があるクラスを自動的に識別するには、 <コンテキスト:コンポーネントスキャン>アプリケーション コンテキスト XML ファイル内のタグ:
<context:component-scan base-package="com.mycompany.movies"/>
これは、@Component、@Controller、または @Repository のアノテーションが付けられたクラスの指定されたパッケージおよびサブパッケージをスキャンし、それらの Bean 定義を作成します。
代替の依存関係注入メカニズム
@Inject は@Autowired に似た Java 標準のアノテーションですが、Spring に固有のものではありません。もう 1 つのオプションは、@Autowired と @Qualifier の機能を組み合わせた @Resource です。
ベスト プラクティス
保守性を向上させるには、@Inject または @Resource を使用することをお勧めします。 @Autowired の代わりに。さらに、早期検証を可能にし、NullPointerExceptions を防ぐために、メソッドではなくコンストラクターに依存関係の注入を適用することをお勧めします。
以上がSpring の @Autowired アノテーションは依存関係の注入にどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。