@Bean和@Componet區別


今天在看代碼的時候,無意在兩個類上看到了這兩個注解,一個使用了@Bean配合@Configuration,一個使用了@Componet。依稀記得這兩個注解都是實現以前在xml中<bean xxx/>的功能,但是具體不知道有什么區別。

具體理解

在查閱了有關資料以后,發現這兩個功能確實是一樣,都是創建bean實例,並讓spring容器管理其生命周期。

但是一般他們的使用情況不太一樣。一般@Confiuration配合@Bean使用,寫在配置文件中,返回的是某一個對象的實例;而@Component是對應某一個類,配合@ComponentScan使用,然后讓spring ioc容器實例化。

而且使用@Confiugraion和@Bean, 會進行cglib增強,拿到的是一個代理對象;@Component拿到的是一個普通的java對象。至於為什么?我並沒有找到答案。不過兩個進行對比以及我的猜測,是因為@Confiugraion和@Bean使用中返回的是一個已經定義的類的對象,可能后續要對它實例化的過程中添加一些邏輯,所以要用cglib進行動態代理;而@Component是由Spring容器進行實例化的。如果有誤解的話,還望指出,進行修改。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM