Spring Boot 最核心的 25 個(gè)注解
1限嫌、@SpringBootApplication
這是 Spring Boot 最最最核心的注解,用在 Spring Boot 主類上时捌,標(biāo)識(shí)這是一個(gè) Spring Boot 應(yīng)用怒医,用來(lái)開啟 Spring Boot 的各項(xiàng)能力。
其實(shí)這個(gè)注解就是 @SpringBootConfiguration奢讨、@EnableAutoConfiguration稚叹、@ComponentScan 這三個(gè)注解的組合,也可以用這三個(gè)注解來(lái)代替 @SpringBootApplication 注解拿诸。
2扒袖、@EnableAutoConfiguration
允許 Spring Boot 自動(dòng)配置注解,開啟這個(gè)注解之后亩码,Spring Boot 就能根據(jù)當(dāng)前類路徑下的包或者類來(lái)配置 Spring Bean季率。
如:當(dāng)前類路徑下有 Mybatis 這個(gè) JAR 包,MybatisAutoConfiguration 注解就能根據(jù)相關(guān)參數(shù)來(lái)配置 Mybatis 的各個(gè) Spring Bean蟀伸。
3、@Configuration
這是 Spring 3.0 添加的一個(gè)注解缅刽,用來(lái)代替 applicationContext.xml 配置文件啊掏,所有這個(gè)配置文件里面能做到的事情都可以通過(guò)這個(gè)注解所在類來(lái)進(jìn)行注冊(cè)。
4衰猛、@SpringBootConfiguration
這個(gè)注解就是 @Configuration 注解的變體迟蜜,只是用來(lái)修飾是 Spring Boot 配置而已,或者可利于 Spring Boot 后續(xù)的擴(kuò)展啡省。
5娜睛、@ComponentScan
這是 Spring 3.1 添加的一個(gè)注解髓霞,用來(lái)代替配置文件中的 component-scan 配置,開啟組件掃描畦戒,即自動(dòng)掃描包路徑下的 @Component 注解進(jìn)行注冊(cè) bean 實(shí)例到 context 中方库。
前面 5 個(gè)注解可以在這篇文章《Spring Boot 最核心的 3 個(gè)注解詳解》中了解更多細(xì)節(jié)的。
6障斋、@Conditional
這是 Spring 4.0 添加的新注解纵潦,用來(lái)標(biāo)識(shí)一個(gè) Spring Bean 或者 Configuration 配置文件,當(dāng)滿足指定的條件才開啟配置垃环。
7邀层、@ConditionalOnBean
組合 @Conditional 注解,當(dāng)容器中有指定的 Bean 才開啟配置遂庄。
8寥院、@ConditionalOnMissingBean
組合 @Conditional 注解,和 @ConditionalOnBean 注解相反涛目,當(dāng)容器中沒有指定的 Bean 才開啟配置秸谢。
9、@ConditionalOnClass
組合 @Conditional 注解泌绣,當(dāng)容器中有指定的 Class 才開啟配置钮追。
10、@ConditionalOnMissingClass
組合 @Conditional 注解阿迈,和 @ConditionalOnMissingClass 注解相反元媚,當(dāng)容器中沒有指定的 Class 才開啟配置。
11苗沧、@ConditionalOnWebApplication
組合 @Conditional 注解刊棕,當(dāng)前項(xiàng)目類型是 WEB 項(xiàng)目才開啟配置。
當(dāng)前項(xiàng)目有以下 3 種類型待逞。
enum Type {
/**
* Any web application will match.
*/
ANY,
/**
* Only servlet-based web application will match.
*/
SERVLET,
/**
* Only reactive-based web application will match.
*/
REACTIVE
}
12甥角、@ConditionalOnNotWebApplication
組合 @Conditional 注解,和 @ConditionalOnWebApplication 注解相反识樱,當(dāng)前項(xiàng)目類型不是 WEB 項(xiàng)目才開啟配置嗤无。
13、@ConditionalOnProperty
組合 @Conditional 注解怜庸,當(dāng)指定的屬性有指定的值時(shí)才開啟配置当犯。
14、@ConditionalOnExpression
組合 @Conditional 注解割疾,當(dāng) SpEL 表達(dá)式為 true 時(shí)才開啟配置嚎卫。
15、@ConditionalOnJava
組合 @Conditional 注解宏榕,當(dāng)運(yùn)行的 Java JVM 在指定的版本范圍時(shí)才開啟配置拓诸。
16侵佃、@ConditionalOnResource
組合 @Conditional 注解,當(dāng)類路徑下有指定的資源才開啟配置奠支。
17馋辈、@ConditionalOnJndi
組合 @Conditional 注解,當(dāng)指定的 JNDI 存在時(shí)才開啟配置胚宦。
18首有、@ConditionalOnCloudPlatform
組合 @Conditional 注解,當(dāng)指定的云平臺(tái)激活時(shí)才開啟配置枢劝。
19井联、@ConditionalOnSingleCandidate
組合 @Conditional 注解,當(dāng)指定的 class 在容器中只有一個(gè) Bean您旁,或者同時(shí)有多個(gè)但為首選時(shí)才開啟配置烙常。
20、@ConfigurationProperties
用來(lái)加載額外的配置(如 .properties 文件)鹤盒,可用在 @Configuration 注解類蚕脏,或者 @Bean 注解方法上面。
21侦锯、@EnableConfigurationProperties
一般要配合 @ConfigurationProperties 注解使用驼鞭,用來(lái)開啟對(duì) @ConfigurationProperties 注解配置 Bean 的支持。
22尺碰、@AutoConfigureAfter
用在自動(dòng)配置類上面挣棕,表示該自動(dòng)配置類需要在另外指定的自動(dòng)配置類配置完之后。
如 Mybatis 的自動(dòng)配置類亲桥,需要在數(shù)據(jù)源自動(dòng)配置類之后洛心。
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class MybatisAutoConfiguration {
23、@AutoConfigureBefore
這個(gè)和 @AutoConfigureAfter 注解使用相反题篷,表示該自動(dòng)配置類需要在另外指定的自動(dòng)配置類配置之前词身。
24、@Import
這是 Spring 3.0 添加的新注解番枚,用來(lái)導(dǎo)入一個(gè)或者多個(gè) @Configuration 注解修飾的類法严,這在 Spring Boot 里面應(yīng)用很多。
25葫笼、@ImportResource
這是 Spring 3.0 添加的新注解深啤,用來(lái)導(dǎo)入一個(gè)或者多個(gè) Spring 配置文件,這對(duì) Spring Boot 兼容老項(xiàng)目非常有用渔欢,因?yàn)橛行┡渲脽o(wú)法通過(guò) Java Config 的形式來(lái)配置就只能用這個(gè)注解來(lái)導(dǎo)入墓塌。
歡迎Java工程師朋友們加入Java高并發(fā): 957734884瘟忱,群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用奥额、高并發(fā)苫幢、高性能及分布式、Jvm性能調(diào)優(yōu)垫挨、Spring源碼韩肝,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己九榔,不要再用"沒有時(shí)間“來(lái)掩飾自己思想上的懶惰哀峻!趁年輕,使勁拼哲泊,給未來(lái)的自己一個(gè)交代剩蟀!