干貨:SpringBoot中必須掌握的27個注解_第1頁
干貨:SpringBoot中必須掌握的27個注解_第2頁
干貨:SpringBoot中必須掌握的27個注解_第3頁
干貨:SpringBoot中必須掌握的27個注解_第4頁
干貨:SpringBoot中必須掌握的27個注解_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

干貨:SpringBoot中必須掌握的27個注解

SpringBoot方式的項目開發已經逐步成為Java應用開發領域的主流框架,它不僅可以便利地創建生產級的Spring應用程序,還能輕松地通過一些注解配置與目前比較火熱的微服務框架SpringCloud集成。

而SpringBoot之所以能夠輕松地實現應用的創建及與其他框架快速集成,最核心的緣由就在于它極大地簡化了項目的配置,最大化地實現了“商定大于配置”的原則。然而基于SpringBoot雖然極大地便利了開發,但是也很簡單讓人“云里霧里”,特殊是各種注解很簡單讓人“知其然而不知其所以然。

所以,要想用好SpringBoot就必需對其供應的各類功能注解有一個全面而清楚地熟悉和理解。一方面可以提高基于SpringBoot的開發效率,另一方面也是面試中被問及框架原理時所必需要把握的學問點。在接下來的內容中,我就帶大家一起來探究下SpringBoot的一些常用注解吧!

一、Spring相關6個基礎注解

SpringBoot的有些注解也需要與Spring的注解搭配使用,這里我梳理了在項目中與SpringBoot注解協作最為緊密的6個Spring基礎框架的注解。如

1、@Configuration

從Spring3.0,@Configuration用于定義配置類,可替換xml配置文件,被注解的類內部包含有一個或多個被@Bean注解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,并用于構建bean定義,初始化Spring容器。

2、@ComponentScan

做過web開發的同學肯定都有用過@Controller,@Service,@Repository注解,查看其源碼你會發覺,他們中有一個共同的注解@Component,沒錯@ComponentScan注解默認就會裝配標識了@Controller,@Service,@Repository,@Component注解的類到spring容器中。

3、@Conditional

@Conditional是Spring4新供應的注解,通過@Conditional注解可以依據代碼中設置的條件裝載不同的bean,在設置條件注解之前,先要把裝載的bean類去實現Condition接口,然后對該實現接口的類設置是否裝載的條件。

SpringBoot注解中的@ConditionalOnProperty、@ConditionalOnBean等以@Conditional*開頭的注解,都是通過集成了@Conditional來實現相應功能的。

4、@Import

通過導入的方式實現把實例加入springIOC容器中。可以在需要時將沒有被Spring容器管理的類導入至Spring容器中。

5、@ImportResource

和@Import類似,區分就是@ImportResource導入的是配置文件。

6、@Component

@Component是一個元注解,意思是可以注解其他類注解,如@Controller@Service@Repository。帶此注解的類被看作組件,當使用基于注解的配置和類路徑掃描的時候,這些類就會被實例化。其他類級別的注解也可以被認定為是一種特別類型的組件。

比如@Controller掌握器(注入服務)、@Service服務(注入dao)、@Repositorydao(實現dao訪問)。@Component泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注,作用就相當于XML配置,beanid=class=/。

二、SpringBoot最核心的21個注解

說完與SpringBoot親密相關的幾個Spring基礎注解后,下面我們就再一起看看SpringBoot供應的核心注解的內容吧!

1、@SpringBootApplication

這個注解是SpringBoot最核心的注解,用在SpringBoot的主類上,標識這是一個SpringBoot應用,用來開啟SpringBoot的各項力量。實際上這個注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三個注解的組合。由于這些注解一般都是一起使用,所以SpringBoot供應了一個統一的注解@SpringBootApplication。

2、@EnableAutoConfiguration

允許SpringBoot自動配置注解,開啟這個注解之后,SpringBoot就能依據當前類路徑下的包或者類來配置SpringBean。

如:當前類路徑下有Mybatis這個JAR包,MybatisAutoConfiguration注解就能依據相關參數來配置Mybatis的各個SpringBean。

@EnableAutoConfiguration實現的關鍵在于引入了AutoConfigurationImportSelector,其核心規律為Imports方法,規律大致如下:

從配置文件META-INF/spring.factories加載全部可能用到的自動配置類;去重,并將exclude和excludeName屬性攜帶的類排解;過濾,將滿意條件(@Conditional)的自動配置類返回;

3、@SpringBootConfiguration

這個注解就是@Configuration注解的變體,只是用來修飾是SpringBoot配置而已,或者可利于SpringBoot后續的擴展。

4、@ConditionalOnBean

@ConditionalOnBean(A.class)僅僅在當前上下文中存在A對象時,才會實例化一個Bean,也就是說只有當A.class在spring的applicationContext中存在時,這個當前的bean才能夠創建。

5、@ConditionalOnMissingBean

組合@Conditional注解,和@ConditionalOnBean注解相反,僅僅在當前上下文中不存在A對象時,才會實例化一個Bean。

6、@ConditionalOnClass

組合@Conditional注解,可以僅當某些類存在于classpath上時候才創建某個Bean。

7、@ConditionalOnMissingClass

組合@Conditional注解,和@ConditionalOnMissingClass注解相反,當classpath中沒有指定的Class才開啟配置。

8、@ConditionalOnWebApplication

組合@Conditional注解,當前項目類型是WEB項目才開啟配置。當前項目有以下3種類型:ANY(任何Web項目都匹配)、SERVLET(僅但基礎的Servelet項目才會匹配)、REACTIVE(只有基于響應的web應用程序才匹配)。

9、@ConditionalOnNotWebApplication

組合@Conditional注解,和@ConditionalOnWebApplication注解相反,當前項目類型不是WEB項目才開啟配置。

10、@ConditionalOnProperty

組合@Conditional注解,當指定的屬性有指定的值時才開啟配置。詳細操作是通過其兩個屬性name以及havingValue來實現的,其中name用來從perties中讀取某個屬性值,假如該值為空,則返回false;

假如值不為空,則將該值與havingValue指定的值進行比較,假如一樣則返回true;否則返回false。假如返回值為false,則該configuration不生效;為true則生效。

11、@ConditionalOnExpression

組合@Conditional注解,當SpEL表達式為true時才開啟配置。

12、@ConditionalOnJava

組合@Conditional注解,當運行的JavaJVM在指定的版本范圍時才開啟配置。

13、@ConditionalOnResource

組合@Conditional注解,當類路徑下有指定的資源才開啟配置。

14、@ConditionalOnJndi

組合@Conditional注解,當指定的JNDI存在時才開啟配置。

15、@ConditionalOnCloudPlatform

組合@Conditional注解,當指定的云平臺激活時才開啟配置。

16、@ConditionalOnSingleCandidate

組合@Conditional注解,當指定的class在容器中只有一個Bean,或者同時有多個但為首選時才開啟配置。

17、@ConfigurationProperties

SpringBoot可使用注解的方式將自定義的properties文件映射到實體bean中,比如perties文件。

18、@EnableConfigurationProperties

當@EnableConfigurationProperties注解應用到你的@Configuration時,任何被@ConfigurationProperties注解的beans將自動被Environment屬性配置。這種風格的配置特殊適合與SpringApplication的外部YAML配置進行協作使用。

19、@AutoConfigureAfte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論