ホームページ > Java > &#&チュートリアル > Spring の @Autowired アノテーションは依存関係の注入にどのように機能しますか?

Spring の @Autowired アノテーションは依存関係の注入にどのように機能しますか?

Susan Sarandon
リリース: 2024-12-10 12:27:15
オリジナル
861 人が閲覧しました

How Does Spring's @Autowired Annotation Work for Dependency Injection?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート