2

Springのドキュメントでは、@ Componentアノテーションを次のように定義しています。「アノテーション付きクラスが「コンポーネント」であることを示します。このようなクラスは、アノテーションベースの構成とクラスパススキャンを使用する場合の自動検出の候補と見なされます。」

これは簡潔ですが、多くは語っていません。@Componentは、クラスのライフサイクル(作成/破棄)がSpringによって管理されることを示すために使用されることを理解しています。私が持っている質問:どこかで自動配線されるクラスでのみ使用する必要がありますか(1)、自動配線属性を持つクラスでも使用する必要がありますか(2)?

(1)

@Component
class B {
}

class A {

   // @Autowired
   B b;
}

(2)

@Component
class B {
}

@Component
class A {

  // @Autowired
  B b;
}
4

1 に答える 1

6

厳密に言えば、どこでも使用する必要はありません。昔のようにXMLでBeanを定義できます。また、昔は好きなものを使う@Serviceことができます。@Repositoryしかし、あなたの質問に戻ってください:

BeanにSpringコンテキストのA注釈が付けられていないか、知られていない場合、Springによって作成および管理されることはありません。@Componentしたがって、注釈を使用するかA、XMLで定義する必要があります。

これは同様に当てはまりBます。自動配線の対象にしたい場合は、注釈スキャンまたはXMLのいずれかによってSpringに認識されている必要があります。

結局のところ、XML、注釈、またはJava構成のどれを使用するかは実際には重要ではありません。両方のBeanがアプリケーションコンテキストに認識されていることが重要です。

于 2012-12-17T18:22:20.843 に答える