について理解する
概要
開発者は、 に関して混乱に遭遇することがよくあります。および これらのタグは、アノテーション処理とコンポーネント スキャンのさまざまな側面を処理します。
特定のアプリケーション コンテキスト内でアノテーション処理をアクティブ化します。 @Required、@Autowired、@Component などの一般的なアノテーションを使用できるようになります。このタグは、コンテキストにすでに登録されている Bean 内のアノテーションを利用するために不可欠です。
Spring アノテーション (例: @Component、@Service、@Repository) が付けられたクラスの指定されたパッケージをスキャンします。これらの識別されたクラスは、アプリケーション コンテキストで Bean として自動的に登録され、依存関係注入やその他の Spring 機能が有効になります。
比較と使用法
Feature |
|
|
Annotation Processing |
Activates for all beans in context |
Activates for scanned beans only |
Component Scanning |
No |
Yes |
Spring Tool Registration |
Yes (same as ) |
Yes |
類似点と相違点
- 両方のタグには、アノテーション処理と Bean のインスタンス化を処理する Spring Bean ポストプロセッサの登録が含まれます。
- false に設定すると、スキャンされたコンポーネントのアノテーション処理を無効にする annotation-config 属性が含まれています。
ケーススタディ
例 1: XML 定義 Bean を使用したアノテーション処理
の使用without :
<context:annotation-config />
<bean>
ログイン後にコピー
この構成では、Bean1 と Bean2 のアノテーションが有効になり、アノテーションによる自動配線と依存関係の注入が可能になります。
例 2: アノテーションなしのコンポーネント スキャン処理
を使用しています<コンテキスト:コンポーネントスキャン> without :<context:component-scan base-package="com.example" />
ログイン後にコピー
この構成は、指定されたパッケージをスキャンし、Spring アノテーションでアノテーションが付けられたクラスの Bean を登録しますが、アノテーション処理はアクティブになりません。したがって、これらのスキャンされた Bean に対してアノテーションは処理されません。
例 3: アノテーション処理とコンポーネント スキャン
の両方を使用するおよび :
<context:component-scan base-package="com.example" />
ログイン後にコピー
この構成は両方のタグの機能を組み合わせて、XML 定義 Bean とスキャンされたコンポーネントの両方に対するアノテーション処理をアクティブ化します。
結論
および Spring 3 でアノテーションとコンポーネント スキャンを利用するためのさまざまなメカニズムを提供します。 は注釈処理のアクティブ化に重点を置いています。 Spring アノテーション処理用の Bean クラスの識別と登録に重点を置いています。アプリケーションの特定の要件に応じて、両方のタグを一緒に使用することも、別々に使用することもできます。
以上がSpring 3 の「」と「」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。