16

Spring 3 によって提供される 2 つのアノテーション ( @Componentおよび@Configuration ) に遭遇しました。これらの間で少し混乱しています。
これが私が読んだものです@Component

この「context:component」を Bean 構成ファイルに入れます。つまり、Spring で自動スキャン機能を有効にします。base-package は、コンポーネントが保存されている場所を示しています。Spring はこのフォルダーをスキャンし、Bean (@Component で注釈が付けられています) を見つけて、Spring コンテナーに登録します。

したがって、Spring 構成 XML ファイルでそれらを宣言する必要なく、Bean を登録する@Configuration場合は何を使用するのか疑問に思っています。@Controller

4

5 に答える 5

10

@Configurationは、Spring 3 で導入された Java ベースの構成メカニズムの心臓部です。XML ベースの構成に代わるものを提供します。

したがって、次の 2 つのスニペットは同一です。

<beans ...>
    <context:component-scan base-package="my.base.package"/>
    ... other configuration ...
</beans>

と:

@Configuration
@ComponentScan(basePackages = "my.base.package")
public class RootConfig {
    ... other configuration ...
}

どちらの場合も、Spring はmy.base.package以下をスキャンして、 でアノテーションが付けられたクラス、またはなど@Componentのメタアノテーションが付けられた他のアノテーションのいずれかを探します。@Component@Service

于 2012-08-31T18:49:21.237 に答える
1

@Component候補コンポーネントのいずれかを示すことができる一般的なステレオタイプの注釈です。@Repository, @Service, @Controllerこれらの候補は自動検出の対象となります。

アプリケーションコンテキストを作成するためにSpringフレームワークによって使用されるコンポーネントを作成するために使用される場合@Configuration、内部的@Configurationにそれを使用するのは@Component、フレームワーク自体が作成するSpringコンポーネントであっても理にかなっています。

于 2019-06-22T06:19:41.427 に答える