SpringBoot底層注解詳解
一、 @Configuration
我們先來看看,以前我們用spring是怎么配置bean的屬性值:

雖然不算多,但是如果每一個(gè)bean都這樣配置,屬實(shí)不容易。這個(gè)時(shí)候我們的@Configuration來了,看他是怎么進(jìn)行配置bean的:

直接在類上加上@Configuration注解,告訴SpringBoot,我們Myconfig是個(gè)配置類哈!然后我們只需要創(chuàng)建方法返回一個(gè)對象,再在方法上添加@Bean注解將它交給容器來注冊。如果我們以后要獲取Bean對象,只需要調(diào)用這個(gè)方法就行了,不過需要注意的是它默認(rèn)的就是單例的,這和spring一樣,如果我們想要它成為多例需要設(shè)置一下@Configuration注解里面的proxyBeanMethods屬性,因此我們引出了FULL和LITE模式。
Full模式和Lite模式
Full模式是指proxyBeanMethods = true,開啟代理bean的方法。此時(shí)調(diào)用配置類中每一個(gè)給而容器注冊組件方法,都會從容器中找組件,保持單例模式。它保證了每個(gè)@Bean方法無論被調(diào)用多少次,返回的組件都是單例的。



Lite模式是指proxyBeanMethods = false,關(guān)閉代理bean的方法。容器中不會保存代理對象,每一次調(diào)用配置類里面的方法,·都會產(chǎn)生一個(gè)新的對象。這可以解決組件依賴的問題。它保證了每個(gè)@Bean方法調(diào)用多少次返回的組件都是新創(chuàng)建的。


那么我們應(yīng)該思考什么時(shí)候用Full模式什么時(shí)候用Lite模式?

二、@Import 導(dǎo)入組件
我們先看一下這個(gè)注解的內(nèi)部結(jié)構(gòu)。




三、@Conditional
條件裝配注解:滿足我們Conditional指定的條件,就進(jìn)行組件注入,不然不進(jìn)行組件注入。

我們發(fā)現(xiàn)它的子注解還是相對比較多的,我們挑幾個(gè)常見的注解來說一下:

案例:

這里我們故意將這個(gè)@Bean("tom")注釋掉,但是我們依然保留user01(),我們看看我們的容器中有沒有包含user01這個(gè)組件:

false,很遺憾,因?yàn)?rdquo;tom“,user01也無法被注冊了。
四、@ImportResource
這個(gè)注解是用來導(dǎo)入spring配置文件的



五、@ConfigurationProperties
這個(gè)注解是用來進(jìn)行配置綁定的。

我們有兩種方法:
方法一:@Component+@ConfigurationProperties組合使用

我們在核心配置文件applicantion.properties中配置前綴為mycar的值


我們看一下網(wǎng)頁上這個(gè)car的屬性是什么?

與我們在核心配置文件配置的值相同。
方法二:@EnableConfigurationProperties+@ConfigurationProperties組合使用

@EnableConfigurationPropertise:開啟組件屬性配置功能,并把這個(gè)組件自動注冊到容器中。
需要注意的是: @ConfigurationProperties不會像Spring容器注入相關(guān)處理類,只是起到相關(guān)標(biāo)記作用,相關(guān)處理邏輯還是由@EnableConfigurationPropertise導(dǎo)入處理類來完成。僅僅被標(biāo)記EnableConfigurationPropertise注解的類,默認(rèn)情況下也不會注冊為Bean。
以上就是SpringBoot底層注解詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot底層注解的資料請關(guān)注腳本之家其它相關(guān)文章!
以上就是SpringBoot底層注解詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot底層注解的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在mybatis執(zhí)行SQL語句之前進(jìn)行攔擊處理實(shí)例
本篇文章主要介紹了在mybatis執(zhí)行SQL語句之前進(jìn)行攔擊處理實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04
Java實(shí)現(xiàn)一個(gè)簡單的緩存方法
本篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡單的緩存方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Java移位運(yùn)算符詳解實(shí)例(小結(jié))
這篇文章主要介紹了Java移位運(yùn)算符詳解實(shí)例(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Java class文件格式之特殊字符串_動力節(jié)點(diǎn)Java學(xué)院整理
特殊字符串出現(xiàn)在class文件中的常量池中,本著循序漸進(jìn)和減少跨度的原則, 首先把class文件中的特殊字符串做一個(gè)詳細(xì)的介紹, 然后再回過頭來繼續(xù)講解常量池,對java class 文件格式相關(guān)知識感興趣的的朋友一起學(xué)習(xí)吧2017-06-06
Java程序連接數(shù)據(jù)庫的常用的類和接口介紹
這篇文章主要介紹了Java程序連接數(shù)據(jù)庫的常用的類和接口,包括Connection類和Statement類等,需要的朋友可以參考下2015-10-10

