Spring Bootの@ComponentScan
アノテーションと@EnableAutoConfiguration
アノテーションの違いは何ですか?これらを追加する必要がありますか?私のアプリケーションは、これらのアノテーションなしでうまく動作します。なぜ私たちがそれらを追加しなければならないのか理解したいだけです。Spring Bootの@ComponentScanと@EnableAutoConfigurationの違いは何ですか?
答えて
Spring Bootの@ComponentScanアノテーションと@EnableAutoConfigurationアノテーションの違いは何ですか?
@EnableAutoConfiguration
annotation tells Springは、追加したjarの依存関係に基づいて、Springの設定方法を「推測」するように指示します。たとえば、HSQLDBがクラスパス上にあり、データベース接続Beanを手動で設定していない場合、Springはインメモリデータベースを自動設定します。
@ComponentScan
は、指定されたパッケージ内の他のコンポーネント、構成、およびサービスを検索するようSpringに指示します。 Springは、事前に定義されたプロジェクトパッケージからBeanやコンポーネントを自動スキャン、検出、登録することができます。パッケージが指定されていない場合、現在のクラスパッケージはルートパッケージとみなされます。
これを追加する必要がありますか?
もし私があなたのためにすべてのものを自動構成するためのスプリングブートが必要な場合は、@EnableAutoConfigurationが必要です。手動で追加する必要はありません。春は、提供するアノテーションに基づいて内部的に追加します。
実際には、@SpringBootApplication
注釈は、@Configuration、@EnableAutoConfiguration
および@ComponentScan
をデフォルト属性とともに使用することと同等です。
も参照してください:春ブーツの主な利点の
にリンクしているjavadocを見てください。そして、** @ ComponentScan **と** @ ComponentScans **の間の違いは何ですか? –
一つは、伝統的なXMLベースの構成に対する駆動の注釈で、@EnableAutoConfigurationが自動的に構成しますSpringアプリケーションはインクルードされたjarファイルに基づいて、デフォルトまたはヘルパーbasを設定しますpom.xmlの依存関係について書かれています。 自動設定は、通常、クラスパスと定義されたBeanに基づいて適用されます。したがって、DataSource、EntityManagerFactory、TransactionManagerなどを定義する必要はありません。魔法のようにクラスパスに基づいて、Spring Bootは自動的に適切なBeanを作成し、それらを登録します。たとえば、クラスパスにtomcat-embedded.jarがある場合は、TomcatEmbeddedServletContainerFactoryが必要になります(独自のEmbeddedServletContainerFactory Beanを定義していない限り)。 @EnableAutoConfigurationには、自動設定を明示的に無効にするためのexclude属性があります。それ以外の場合は、単にpom.xmlから除外することができます。たとえば、Springにtomcatを設定し、spring-bootstarter-ウェブ。
@ComponentScanバネ部材スキャンのスコープを提供し、それは単にも設けられたベースパッケージを進み、等@Bean又は@Autowiredによって必要とされる依存関係を取り上げ、典型的なSpringアプリケーションでは、@ComponentScanがで使用され@Configurationで注釈が付けられたものです。設定クラスには@Beanでアノテーションされたメソッドが含まれています。これらの@Bean注釈付きメソッドは、Springコンテナによって管理されるBeanを生成します。これらのBeanは@ComponentScanアノテーションによって自動的に検出されます。 @Repository、@Service、@Controller、@Configuration、@Componentのような豆を自動検出可能にするいくつかの注釈があります。 以下のコードで、SpringはBeanAクラスを含むパッケージからスキャンを開始します。
@Configuration
@ComponentScan(basePackageClasses = BeanA.class)
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class Config {
@Bean
public BeanA beanA(){
return new BeanA();
}
@Bean
public BeanB beanB{
return new BeanB();
}
}
- 1. spring-bootとrun-spring-bootの違いは次のとおりです。
- 2. spring-boot-starter-webとspring-boot-starter-web-servicesとspring-boot-startter-jerseyの相違点
- 3. Spring Boot - マイクロサービスとは何が関係していますか?
- 4. @ComponentScanとXml構成を使用しないで別のアプリケーションにspring boot jarをインポートする
- 5. @ComponentScan with Spring and Mongodb
- 6. Spring Securityのauthenticated()とcsrfの違いは何ですか?
- 7. Spring DataのMongoTemplateとMongoRepositoryの違いは何ですか?
- 8. SpringのResponseEntityとHttpEntityの違いは何ですか?
- 9. Spring MVCのHandlerInterceptorとHandlerInceptorAdaptorの違いは何ですか?
- 10. Springで-Drun.profilesと-Dspring.profiles.activeの違いは何ですか?
- 11. spring-data-jpaとspring-boot-startter-data-jpaの相違点
- 12. Spring SingletonとJava Singleeleton(デザインパターン)の違いは何ですか?
- 13. マネージドBeanとSpring Controllerの違いは何ですか?
- 14. ZookeeperとSpring Cloud設定サーバーの違いは何ですか?
- 15. Spring Dispatcher ServletとWeb Deployment Discriptorの違いは何ですか?
- 16. SpringインターセプタとAOPの違いは何ですか?
- 17. spring-boot embedded tomcatの制限事項は何ですか?
- 18. SpringのComponentScan excludeFiltersアノテーションがSpringブートテストコンテキストで機能しない
- 19. Liberty Spring Boot対Spring Boot
- 20. Spring-bootとspring-mvcとの互換性
- 21. Spring-bootとSpring-cloudの互換性マトリックスはありますか?
- 22. Spring Boot + JPA + mysql ...間違ったアプローチですか?
- 23. Spring RESTコントローラでの単純REST実装とHTTP InboundアダプタでのSpring Integrationとの違いは何ですか?
- 24. EJB、hibernate、spring、JSFの違いは何ですか?
- 25. Socialauth、Scribe-Java、Spring Socialの主な違いは何ですか?
- 26. undertowとspring-bootでエラー1.4
- 27. spring-cloud-sleuth(boot)とspring-integrationの統合
- 28. Spring Bootでスケジュールタスクをソフトコーディングする最良の方法は何ですか?
- 29. Spring Boot OAuth2とUserDetails
- 30. Spring BootとGoogle SSO
あなたは[ 'SpringBootApplication' @](http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html)持っていますか?これは、あなたが言及した2つの代替品です –
はい、私はメインクラスで使用します –
'@ ComponentScan'はアノテーション付きSpringコンポーネントをスキャンするためのものです。' @ EnableAutoConfiguration'は無料の機能を有効にします(設定、 Spring Bootが提供しています。 '@ SprintBootApplication'では、あなたが言及した2つのように、一般的に使用される少数ではなく、単一の注釈を使用することができます。 –