1

以下の例を参照すると、 @Component で注釈が付けられたアンマネージド Beanの自動配線 Bean を xml ファイルに登録する必要があり、context:component-scan を使用した場合でも、Java クラスでのみ配線できることが示されています。しかし、context:annotation-config と context:component-scan の違いの例 [最も高い賛成票 (174) の例を参照] では、xml ファイルにその定義がなくても Bean を配線できると述べています。

だから私は正しい定義が混乱しました?? 最初の URL (Autowiring unmanaged Bean) で説明されているように、実際に試してみたところ、例外が発生しました。<context:annotation-config>xml ファイルで Bean 定義が必要であると仮定すると、との本当の利点または違いは何ですか<context:component-scan>

両方のリンクが互いに矛盾していることがわかりました

4

1 に答える 1

2

XML で Bean を宣言し、それらに @Component/@Service/@Repository のアノテーションを付けて組み合わせることができます。XML で宣言された Bean と @Component/@Service/@Repository で注釈が付けられた Bean の両方で @Autowired を使用できます。@Autowired を使用して、XML で宣言された Bean をアノテーション付き Bean に注入したり、アノテーション付き Bean を XML で宣言された Bean に注入したりできます。

<context:annotation-config/> は、@Autowired を使用したマネージド Bean の依存性注入のサポートと、他のいくつかの機能を有効にするだけです。

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-annotation-config

<context:component-scan ... /> は、 <context:annotation-config/> が有効にするすべてのものに加えて、@Component/@Service/@Repository などのサポートを有効にします。通常、<context:component-scan/> のみを使用する必要があります。

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-classpath-scanning

「管理されていない」Bean は、XML で宣言されておらず、アノテーションもコンポーネントもスキャンされていない Bean です。AOP と <context:spring-configured/> を使用して、Spring を使用してアンマネージド Bean に依存関係を注入しようとすることができるようです。詳細については、こちらのドキュメントを参照してください。

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/aop.html#aop-atconfigurable

于 2013-05-04T05:55:04.763 に答える