ホームページ >Java >&#&チュートリアル >Spring の @Autowired アノテーションはどのように機能するのか、またそれを使用するためのベスト プラクティスは何ですか?
Spring のニュアンスを明らかにする @Autowired: 総合ガイド
Spring の領域では、@Autowired は、 Bean ワイヤリングにより、開発者は XML ファイルを手動で構成する必要がなくなります。ただし、その複雑な仕組みを理解することは、初心者にとっては複雑な作業になる可能性があります。
分析例
提供されているコード例を検討してください:
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; } }
これらの例では、@Autowired は Bean の依存関係をフィールドまたはセッター メソッドに挿入します。 Bean をオートワイヤリングするように指定すると、Spring は必要な Bean を自動的に検出して関連付け、開発者を明示的な Bean ワイヤリングから解放します。
オートワイヤリングについて
自動ワイヤリングを有効にするには、Spring は次の実行を実行します。提供された基本パッケージに基づいてコンポーネントをスキャンし、アノテーション付きクラス (@Component、@Controller など) を潜在的な Bean として検出します。スキャン プロセス中に、@Autowired アノテーションが識別され、プロパティまたはメソッドが注入ポイントとしてマークされます。
Bean が作成されると、Spring は autowired プロパティまたはメソッドを走査し、一致するタイプの Bean を検索します。同じタイプの Bean が複数存在する場合、 @Qualifier を使用して目的の Bean を指定しない限り、例外がスローされます。
自動配線の例
自動配線のシナリオを説明するには、次のことを考慮します。次の例:
interface Color { void design(); } class Red implements Color { @Override public void design() { // Red design logic } } class Blue implements Color { @Override public void design() { // Blue design logic } } class MainClass { @Autowired private Color color; public static void main(String[] args) { MainClass mainClass = new MainClass(); mainClass.color.design(); // Red or Blue? } }
この例では、Red と Blue の両方が Color インターフェイスを実装しています。 MainClass.color の @Autowired アノテーションは、Spring が Color インターフェースのインスタンスを自動的に挿入する必要があることを示します。ただし、追加のガイダンスがなければ、Spring はどの特定の実装を注入するかを決定できません。
この曖昧さを解決するには、@Qualifier または @Resource アノテーションを活用する必要があります。
Using @Qualifier
@Qualifier("redBean") class Red implements Color {} @Qualifier("blueBean") class Blue implements Color {}
MainClass で使用される場合、@Qualifier は自動配線を絞り込みます
@Resource を使用する
@Resource(name="redBean") private Color color;
@Resource は、@Autowired アノテーションと @Qualifier アノテーションを組み合わせて、「」という名前の Bean を注入します。 redBean".
最高実践
最適な自動配線の実践については、次のガイドラインを考慮してください。
以上がSpring の @Autowired アノテーションはどのように機能するのか、またそれを使用するためのベスト プラクティスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。