spring中的@bean注解


spring的注解分類

從廣義上講,spring注解可以分為兩類,一類注解是用於注冊bean,一類注解用於使用bean。

假如ioc容器就是一間空屋子,首先這間空屋子里面啥也沒有,我們要給這個空屋子添置家具的操作,就相當於每個注冊bean的注解的作用,意思就是說,注冊bean的注解作用,就是往ioc容器中放置(注冊)東西。

用於注冊bean的注解,比如@component、@repository、@controller、@service和@configration等,用途都是注冊bean並放入到ioc容器中,一來是交給spring統一管理方便解耦,而來是可以重復使用,還是前面的例子,給空屋子添置的家具總不會都是一次性使用的,比如沙發,你只要一次注冊了,每次想要休息就往上一躺就好了,而不是每次都到屋子外去搬進來(重新注冊),節省了力氣(重新注冊的資源消耗),這也是為什么在spring里絕大部分bean都是單例模式的原因。

而用於使用bean的注解,比如@autowired、@resource等,用途都是從ioc容器中拿到注冊好的bean以方便使用。使用這些注解的前提是ioc容器中有相應的被注冊號的bean,如果ioc容器中沒有,比如屋子里沒有沙發,你還往地板上硬躺,就會很難受甚至受傷(報錯)。

@bean注解概述

根據上面的分類,@bean注解應該歸類於用於注冊bean的注解。

為什么要有@bean注解呢?這是因為類似於@component、@repository、@controller和@service這些注冊bean的注解都存在一定的局限性,局限於只能作用於自己編寫的類,但是如果是一個jar包的第三方庫要加入到ioc容器中的話,這些注解就無能為力了。為了解決這樣的問題,@bean注解就產生了(當然了,還有@import注解也可以做到這一點,且更加方便快捷)。

@bean注解是被設計使用在方法上的,在方法上使用@bean注解的時候,該方法就會被告知去產生一個bean對象,然后這個bean對象交給spring管理,且產生這個bean對象的方法在整個spring的生命周期中只會被調用一次,調用完成之后spring會將這個bean對象放在自己的ioc容器中。

class Yanggb {
    @Bean
    public YanggbDao createYanggbDaoBean(){
        return new YanggbDao();
    }
}

在上面的例子中,createYanggbDaoBean方法就會產生一個YanggbDao對象,並將這個對象交給Spring管理(放到ioc容器中)。到這里很容易就能明白,@bean注解是使用在方法上的注解,它會明確地告訴被注解的方法去產生一個bean對象並交給spring容器管理。簡單點說就是,@bean注解放在方法上,讓方法去產生一個bean交給spring容器。

因為@bean注解是使用在方法上的,因此使用@bean注解的另一個好處就是能夠動態獲取一個bean對象,且能夠根據環境不同得到不同的bean對象。

另外,@bean注解和xml配置中的bean標簽的作用是一模一樣的。

 

"人的感情很微妙,沒有直白的表達,並不代表沒有感情。"


免責聲明!

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



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