Spring Boot 最核心的 25 個(gè)注解,都是干貨!
Spring Boot 最核心的 25 個(gè)注解
1、@SpringBootApplication
這是 Spring Boot 最最最核心的注解,用在 Spring Boot 主類上,標(biāo)識(shí)這是一個(gè) Spring Boot 應(yīng)用,用來開啟 Spring Boot 的各項(xiàng)能力。
其實(shí)這個(gè)注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 這三個(gè)注解的組合,也可以用這三個(gè)注解來代替 @SpringBootApplication 注解。
2、@EnableAutoConfiguration
允許 Spring Boot 自動(dòng)配置注解,開啟這個(gè)注解之后,Spring Boot 就能根據(jù)當(dāng)前類路徑下的包或者類來配置 Spring Bean。
如:當(dāng)前類路徑下有 Mybatis 這個(gè) JAR 包,MybatisAutoConfiguration 注解就能根據(jù)相關(guān)參數(shù)來配置 Mybatis 的各個(gè) Spring Bean。
3、@Configuration
這是 Spring 3.0 添加的一個(gè)注解,用來代替 applicationContext.xml 配置文件,所有這個(gè)配置文件里面能做到的事情都可以通過這個(gè)注解所在類來進(jìn)行注冊(cè)。
4、@SpringBootConfiguration
這個(gè)注解就是 @Configuration 注解的變體,只是用來修飾是 Spring Boot 配置而已,或者可利于 Spring Boot 后續(xù)的擴(kuò)展。
5、@ComponentScan
這是 Spring 3.1 添加的一個(gè)注解,用來代替配置文件中的 component-scan 配置,開啟組件掃描,即自動(dòng)掃描包路徑下的 @Component 注解進(jìn)行注冊(cè) bean 實(shí)例到 context 中。
前面 5 個(gè)注解可以在這篇文章《Spring Boot 最核心的 3 個(gè)注解詳解》中了解更多細(xì)節(jié)的。
6、@Conditional
這是 Spring 4.0 添加的新注解,用來標(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 {
}
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
用來加載額外的配置(如 .properties 文件),可用在 @Configuration 注解類,或者 @Bean 注解方法上面。
21、@EnableConfigurationProperties
一般要配合 @ConfigurationProperties 注解使用,用來開啟對(duì) @ConfigurationProperties 注解配置 Bean 的支持。
22、@AutoConfigureAfter
用在自動(dòng)配置類上面,表示該自動(dòng)配置類需要在另外指定的自動(dòng)配置類配置完之后。
如 Mybatis 的自動(dòng)配置類,需要在數(shù)據(jù)源自動(dòng)配置類之后。
23、@AutoConfigureBefore
這個(gè)和 @AutoConfigureAfter 注解使用相反,表示該自動(dòng)配置類需要在另外指定的自動(dòng)配置類配置之前。
24、@Import
這是 Spring 3.0 添加的新注解,用來導(dǎo)入一個(gè)或者多個(gè) @Configuration 注解修飾的類,這在 Spring Boot 里面應(yīng)用很多。
25、@ImportResource
這是 Spring 3.0 添加的新注解,用來導(dǎo)入一個(gè)或者多個(gè) Spring 配置文件,這對(duì) Spring Boot 兼容老項(xiàng)目非常有用,因?yàn)橛行┡渲脽o(wú)法通過 Java Config 的形式來配置就只能用這個(gè)注解來導(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í)間來學(xué)習(xí)提升自己,不要再用"沒有時(shí)間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個(gè)交代!
相關(guān)評(píng)說:
依安縣對(duì)心: ______ 會(huì)一些主流的框架 面試的時(shí)候確實(shí)有用 但與實(shí)際“碼力”沒有太大關(guān)系 我常常把這種關(guān)系比作像中西醫(yī),中西餐的關(guān)系 面試需要一些比較明顯的指標(biāo),面試一樣無(wú)法知道你的寫代碼能力,只好用這些東西來做參考 西醫(yī)流行正是因?yàn)橛羞@些指標(biāo)...
依安縣對(duì)心: ______ Spring Boot主要包含以下特性:直接嵌入Tomcat, Jetty或者Undertow作為Servlet container.從此之后再也不用將應(yīng)用程序打包成war然后上傳到application server里面了. ...
依安縣對(duì)心: ______ Spring是一個(gè)開源的輕量級(jí)Java SE(Java 標(biāo)準(zhǔn)版本)/Java EE(Java 企業(yè)版本)開發(fā)應(yīng)用框架,其目的為開發(fā)Java應(yīng)用程序提供了全面的基礎(chǔ)架構(gòu)支持.它包含一些很好的功能,依賴注入和開箱即用的模塊,如:Spring JDBC 、Spring MVC 、...
依安縣對(duì)心: ______ Spring Boot項(xiàng)目的主要目標(biāo)如下: 為所有的Spring開發(fā)工作提供一個(gè)更快、更廣泛的入門經(jīng)驗(yàn) 開箱即用,你也可以通過修改默認(rèn)值來快速滿足你的項(xiàng)目的需求 提供了一系列大型項(xiàng)目中常見的非功能性特性,如嵌入式服務(wù)器、安全、指標(biāo),健康檢測(cè)、外部配置等 Spring Boot不生成代碼,且完全不需要XML配置.下圖顯示了Spring Boot在Spring生態(tài)系統(tǒng)中的位置. Spring Boot還附帶了一個(gè)命令行工具,你可以用來快速創(chuàng)建Spring原型應(yīng)用,它提供了一種讓你的Spring應(yīng)用起步的最快速的方式.該工具允許運(yùn)行Groovy腳本,這意味著你可以使用類似于Java的語(yǔ)法.
依安縣對(duì)心: ______ 案例:1.application.properties2.application-cus1.properties3.application-cus1.properties4.application-cus1.properties5.controller6.結(jié)果