大白話講解Spring的@bean註解

一、Spring註解分類

從廣義上Spring註解能夠分爲兩類:javascript

一類註解是用於註冊Beanjava

假如IOC容器就是一間空屋子,首先這間空屋子啥都沒有,咱們要吃大餐,咱們就要從外部搬運食材和餐具進來。這裏把某同樣食材或者某同樣餐具搬進空屋子的操做就至關於每一個註冊Bean的註解做用相似。註冊Bean的註解做用就是往IOC容器中放(註冊)東西! 用於註冊Bean的註解: 好比@Component , @Repository , @ Controller , @Service , @Configration這些註解就是用於註冊Bean,放進IOC容器中,一來交給spring管理方便解耦,二來還能夠進行二次使用,啥是二次使用呢?這裏的二次使用能夠理解爲:在你開始從外部搬運食材和餐具進空屋子的時候,一次性搬運了豬肉、羊肉、鐵勺、筷子四樣東西,這個時候你要開始吃大餐,首先你吃東西的時候確定要用筷子或者鐵勺,別說你手抓,只要你須要,你就會去找,這個時候發現你已經把筷子或者鐵勺放進了屋子,你就不用再去外部拿筷子進屋子了,意思就是IOC容器中已經存在,就能夠只要拿去用,而沒必要再去註冊!而拿屋子裏已有的東西的操做就是下面要講的用於使用Bean的註解!spring

一類註解是用於使用Bean編程

用於使用Bean的註解:好比@Autowired , @Resource註解,這些註解就是把屋子裏的東西本身拿來用,若是你要拿,前提必定是屋子(IOC)裏有的,否則就會報錯,好比你要作一道牛肉拼盤須要五頭牛作原材料才行,你如今鍋裏只有四頭牛,這個時候你知道,本身往屋子裏搬過五頭牛,這個時候就直接把屋子裏的那頭牛直接放進鍋裏,完成牛肉拼盤的組裝。是的這些註解就是須要啥想要啥,只要容器中有就往容器中拿!而這些註解又有各自的區別,好比@Autowired用在筷子上,這筷子你可能只想用木質的,或許只想用鐵質的,@Autowired做用在什麼屬性的筷子就那什麼筷子,而@Resource若是用在安格斯牛肉上面,就指定要名字就是安格斯牛肉的牛肉。設計模式

二、@Bean註解概述

本篇文章主要講的是@Bean註解,這個註解屬於用於註冊Bean的註解。併發

下面這段話部分摘自Spring中爲何要有@Bean註解?學習

Spring的@Bean註解用於告訴方法,產生一個Bean對象,而後這個Bean對象交給Spring管理。 產生這個Bean對象的方法Spring只會調用一次,隨後這個Spring將會將這個Bean對象放在本身的IOC容器中。@Bean明確地指示了一種方法,什麼方法呢?產生一個bean的方法,而且交給Spring容器管理;從這咱們就明白了爲啥@Bean是放在方法的註釋上了,由於它很明確地告訴被註釋的方法,你給我產生一個Bean,而後交給Spring容器,剩下的你就別管了。記住,@Bean就放在方法上,就是讓方法去產生一個Bean,而後交給Spring容器。spa

以下就能讓accountDao方法產生一個AccountDao 對象,而後這個AccountDao 對象交給Spring管理.net

class A{
        @Bean
        public AccountDao accountDao(){
            return new AccountDao();
        }
    }
複製代碼

實際上,@Bean註解和xml配置中的bean標籤的做用是同樣的。設計

三、爲何要有@Bean註解?

不知道你們有沒有想過,用於註冊Bean的註解的有那麼多個,爲什麼還要出現@Bean註解?

緣由很簡單:相似@Component , @Repository , @ Controller , @Service 這些註冊Bean的註解存在侷限性,只能侷限做用於本身編寫的類,若是是一個jar包第三方庫要加入IOC容器的話,這些註解就手無縛雞之力了,是的,@Bean註解就能夠作到這一點!固然除了@Bean註解能作到還有@Import也能把第三方庫中的類實例交給spring管理,並且@Import更加方便快捷,只是@Import註解並不在本篇範圍內,這裏就再也不概述。

使用@Bean註解的另外一個好處就是可以動態獲取一個Bean對象,可以根據環境不一樣獲得不一樣的Bean對象。

四、@Bean註解總結

一、Spring的@Bean註解用於告訴方法,產生一個Bean對象,而後這個Bean對象交給Spring管理。 產生這個Bean對象的方法Spring只會調用一次,隨後這個Spring將會將這個Bean對象放在本身的IOC容器中。

二、@Component , @Repository , @ Controller , @Service 這些註解只侷限於本身編寫的類,而@Bean註解能把第三方庫中的類實例加入IOC容器中並交給spring管理。

三、@Bean註解的另外一個好處就是可以動態獲取一個Bean對象,可以根據環境不一樣獲得不一樣的Bean對象。

四、、記住,@Bean就放在方法上,就是讓方法去產生一個Bean,而後交給Spring容器,剩下的你就別管了。

固然這裏並無講到@Bean註解的具體細節,只是描述了一個大概,若有其它需求可自行谷歌....

end.....

若是本文對你有一點點幫助,那麼請點個讚唄,謝謝~

最後,如有不足或者不正之處,歡迎指正批評,感激涕零!若是有疑問歡迎留言,絕對第一時間回覆!

歡迎各位關注個人公衆號,裏面有一些java學習資料和一大波java電子書籍,好比說周志明老師的深刻java虛擬機、java編程思想、核心技術卷、大話設計模式、java併發編程實戰.....都是java的聖經,不說了快上Tomcat車,咋們走!最主要的是一塊兒探討技術,嚮往技術,追求技術,說好了來了就是盆友喔...

在這裏插入圖片描述
相關文章
相關標籤/搜索