1. 程式人生 > >spring中的@Bean與@Configuration

spring中的@Bean與@Configuration

在使用spring的過程中,一直都看到寫程式碼時@Bean總是與@Configuration一起使用,那麼是否真的是使用@Bean一定需要@Configuration呢?? 查了很多資料,終於找到了。鑑於大部分國內查到的資料不沒有關於這個問題的解釋,即一篇部落格記錄下來,有同類疑惑的人可以看一下。

@Bean作用於方法上,想單獨使用肯定是不可能的了,想想也知道,起碼要掃描到類嘛(拋除配置檔案方式,只說單純在使用註解的情況),因此在需要在該類上使用@Component/@Configuration/@Service 等註解,@Service這種註解其實只是說在可讀性上增加了,一般要使用@Bean時,不會用這類註解標註,畢竟沒人在service類中寫這種方法吧……,因此一般見過的就是兩種@Component/@Configuration,那麼區別在哪裡呢?? 
網上找到的英文解釋我給翻譯一下(英語太爛,湊合看……):

上面這個小例子是從網上擷取的一個圖片,希望原作者不要打我……。 
注意箭頭指向,在一個@Bean標註的方法中,呼叫了另一個@Bean註釋的方法。 
現在是使用@Configuration註解,此時呼叫dataSource() 方法返回的是被Spring管理的單例Bean。 
如果換做是@Component 註解,那麼呼叫了dataSource() 方法返回的物件是執行這個方法返回的物件例項,而不是被spring管理的物件。 
這就是差別所在。

Spring幫助我們管理Bean分為兩個部分,一個是註冊Bean,一個裝配Bean。完成這兩個動作有三種方式,一種是使用自動配置的方式、一種是使用JavaConfig的方式,一種就是使用XML配置的方式。在自動配置的方式中,使用@Component去告訴Spring,我是一個bean,你要來管理我,然後使用@AutoWired註解去裝配Bean(所謂裝配,就是管理物件直接的協作關係)。然後在JavaConfig中,@Configuration其實就是告訴spring,spring容器要怎麼配置(怎麼去註冊bean,怎麼去處理bean之間的關係(裝配))。那麼久很好理解了,@Bean的意思就是,我要獲取這個bean的時候,你spring要按照這種方式去幫我獲取到這個bean。到了使用xml的方式,也是如此。君不見<bean>標籤就是告訴spring怎麼獲取這個bean,各種<ref>就是手動的配置bean之間的關係。


原文:https://blog.csdn.net/little_newBee/article/details/80383691