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

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

Barbara Streisand
リリース: 2024-12-10 18:24:11
オリジナル
348 人が閲覧しました

How Does Spring's @Autowired Annotation Handle Dependency Injection?

Spring @Autowired の使用法を理解する

@Autowired アノテーションにより、XML 構成での手動配線の必要がなくなります。型の一致に基づいて依存関係の挿入を自動化します。

Autowired の例

クラスの例をもう一度見てみましょう。

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }
}

public class MovieRecommender {

    private MovieCatalog movieCatalog;

    private CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    public void prepare(MovieCatalog movieCatalog,
                    CustomerPreferenceDao customerPreferenceDao) {
        this.movieCatalog = movieCatalog;
        this.customerPreferenceDao = customerPreferenceDao;
    }
}
ログイン後にコピー

方法Spring Autowire の複数の実装Beans

@Autowired 宣言では、Spring はパラメーター タイプ (MovieCatalog と CustomerPreferenceDao) を使用して一致する Bean を検索します。複数の一致する Bean が見つかった場合は、例外が発生します。

同じタイプの Bean の処理

アプリケーションに同じインターフェイスを実装する複数の Bean がある場合は、以下を使用できます。 @Qualifier アノテーションを使用して、どの Bean を注入するかを指定します。

@Qualifier("redBean")
class Red implements Color {
    // Class code
}

@Qualifier("blueBean")
class Blue implements Color {
    // Class code
}

// Main Class
@Autowired
@Qualifier("redBean")
private Color color;
ログイン後にコピー

または、次のように使用できます。 @Autowired と @Qualifier を単一のアノテーションに結合するための @Resource:

@Resource(name="redBean")
private Color color;
ログイン後にコピー

ベスト プラクティス

代わりに @Inject (JSR-330 の一部) の使用を検討してください。移植性を高めるために @Autowired を使用します。さらに、例外処理を改善するために、メソッドではなくコンストラクターにアノテーションを付けることをお勧めします。

結論

@Autowired は、Bean ワイヤリング プロセスを自動化し、必要な依存関係は必要な場所に注入されます。ベスト プラクティスを採用することで、Spring アプリケーションで効率的かつ信頼性の高い自動配線を確保できます。

以上がSpring の @Autowired アノテーションは依存関係の注入をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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