@SpringBootApplication
は@Configuration
、@EnableAutoConfiguration
と@ComponentScan
のと同じです。この3つの注釈のいずれも使わずにアプリケーションが動作する理由を考えてみましょう。
それは@Configuration
なしで動作理由:
春がパッケージをスキャンするとき、それは@Configuration
でマークされたすべてのクラスを見つけ、構成の一部としてそれらを使用します。
SpringApplication.run(UserManagementApplication.class, args);
ので、春がスキャンすることにより、このクラスを見つける必要がありません。しかし、次の行に手動で構成ソースとしてUserManagementApplication
を可決しました。そのため、それを@Configuration
でマークする必要はありません。
それは@ComponentScan
なしで動作理由:
クラスUserManagementApplication
は@ImportResource("classpath:spring/application-context.xml")
注釈を持っています。つまり、ファイルspring/application-context.xml
が設定に含まれます。あなたは既にxmlファイルでそれを宣言しているため
<context:component-scan base-package="com.siva.*" />
だから、あなたは、スキャンパッケージの使用注釈を必要としない。そして、このファイルには、次の行が含まれています。
それが動作する理由
@EnableAutoConfiguration
なし:
この注釈は、推測を試してみて、コンポーネントを自動的に設定するには、春にできます。あなたはbuild.gradle
で次の依存関係が含まれている場合たとえば、:
dependencies {
compile 'org.springframework.boot:spring-boot-starter-data-mongodb'
}
春は自動的にMongoDBで動作するために必要なすべてのコンポーネントを構成します。 aplication.proprties
ファイルでホストとユーザー/パスを指定するだけで十分です。
しかし、spring/application-context.xml
ファイルに必要なすべてのBeanを手動で宣言することをお勧めしました。だから、あなたは単に@EnableAutoConfiguration
アノテーションを全く必要としません。
この情報は多くの役に立ちます。ありがとう。 – daemon54