Spring Boot最大的特點是無需XML配置檔案,能自動掃描包路徑裝載并注入對象,并能做到根據classpath下的jar包自動配置。
是以Spring Boot最核心的3個注解就是:
1,@配置
org.springframework.context.annotation.Configuration
這是Spring 3.0添加的一個注解,用來代替applicationContext.xml配置檔案,所有這個配置檔案裡面能做到的事情都可以通過這個注解所在類進行注冊。
下面幾個相關注解也是非常重要的!
用來代替XML配置檔案裡面的 <bean ...> 配置。
@ImportResource
如果有些通過類的注冊方式配置不了的,可以通過這個注解引入額外的XML配置檔案,有些老的配置檔案無法通過 @Configuration 方式配置的非常管用。
@進口
引入用來額外的一個或者多個 @Configuration 修飾的配置檔案類。
@SpringBootConfiguration
這個注解就是@Configuration 注解的變體,隻是 用來修飾是Spring Boot配置而已,或者可利于Spring Boot後續的擴充,源碼如下。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }
2,@ ComponentScan
org.springframework.context.annotation.ComponentScan
這是Spring 3.1添加的一個注解,用來代替配置檔案中的 component-scan 配置,開啟元件掃描,即自動掃描包路徑下的 @Component 注解進行注冊bean執行個體到context中。
另外,@ComponentScans 是可重複注解,即可以配置多個,用來配置注冊不同的子包。
關于重複注解,大家可以看這篇文章“
JAVA元注解@interface詳解”。
3,@ EnableAutoConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration
看全路徑就知道,這是自Spring Boot誕生時添加的注解,用來提供自動配置,上面的兩個都是 spring-context 包下的,不屬于Spring Boot,是以Spring 3.0之後的去XML配置方式已經為Spring靴埋下了伏筆!
自動配置更多詳細使用及實戰可以看這篇文章“
Spring Boot自動配置原理,實戰最後的彩蛋
Spring Boot最核心的3個注解介紹完了,大家可能會有疑問,為什麼最主要的注解 @SpringBootApplication 不在其中?
留給大家的彩蛋,其實這個 @SpringBootApplication 注解就包含了以上3個主要注解,平時沒有自定義配置的需求,則使用 @SpringBootApplication 注解完全就可以了!
我們讓下來看 @SpringBootApplication 注解的源碼,一切明了!
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { ... }
本文來自雲栖社群合作夥伴“開源中國”
本文作者:DemonsI
原文連結