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

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

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



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


那么我們應該思考什么時候用Full模式什么時候用Lite模式?

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




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

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

案例:

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

false,很遺憾,因為”tom“,user01也無法被注冊了。
四、@ImportResource
這個注解是用來導入spring配置文件的



五、@ConfigurationProperties
這個注解是用來進行配置綁定的。

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

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


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

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

@EnableConfigurationPropertise:開啟組件屬性配置功能,并把這個組件自動注冊到容器中。
需要注意的是: @ConfigurationProperties不會像Spring容器注入相關(guān)處理類,只是起到相關(guān)標記作用,相關(guān)處理邏輯還是由@EnableConfigurationPropertise導入處理類來完成。僅僅被標記EnableConfigurationPropertise注解的類,默認情況下也不會注冊為Bean。
以上就是SpringBoot底層注解詳解的詳細內(nèi)容,更多關(guān)于SpringBoot底層注解的資料請關(guān)注腳本之家其它相關(guān)文章!
以上就是SpringBoot底層注解詳解的詳細內(nèi)容,更多關(guān)于SpringBoot底層注解的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java 數(shù)據(jù)結(jié)構(gòu)中棧和隊列的實例詳解
這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)中棧和隊列的實例詳解的相關(guān)資料,主要使用數(shù)組與線性表的方法來實現(xiàn),需要的朋友可以參考下2017-09-09
SpringBoot3.0+SpringSecurity6.0+JWT的實現(xiàn)
本文主要介紹了SpringBoot3.0+SpringSecurity6.0+JWT的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-11-11
mybatis之調(diào)用帶輸出參數(shù)的存儲過程(Oracle)
這篇文章主要介紹了mybatis調(diào)用帶輸出參數(shù)的存儲過程(Oracle),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
簡單了解Thymeleaf語法 數(shù)據(jù)延遲加載使用實例
這篇文章主要介紹了簡單了解Thymeleaf語法 數(shù)據(jù)延遲加載使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2010-05-05
RxJava+Retrofit+Mvp實現(xiàn)購物車
這篇文章主要為大家詳細介紹了RxJava+Retrofit+Mvp實現(xiàn)購物車功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05

