Bean的引數配置

2021-09-12 19:05:33 字數 3115 閱讀 6872

作用域可以分為:singleton,prototype,request,session。

bean的生命週期可以分為定義,初始化,使用和銷毀四個階段。而定義一般在xml檔案中配置完成。

bean的初始化操作可以採用兩種方法進行,一種是在xml配置檔案中設定「init-method」引數的值為對應bean中的初始化方法的名稱;另一種是在不配置xml檔案的情況下,讓對應的bean實現initializingbean介面,並且在bean中覆蓋具體的afterpropertiesset()方法。

bean的銷毀操作同樣可以用兩種方法設定。一是配置「destroy-method」引數;二是實現disposablebean藉口,並覆蓋destroy()方法。

需要注意的是,無論初始化還是銷毀操作,實現介面的方法將會優先於xml配置引數的方法進行。

另一方面,還可以通過在配置預設的初始化和銷毀方法default-init-methoddefault-destory-method進行設定,然後在具體bean中實現對應方法即可。注意,預設初始化方法和銷毀方法可以被前兩種bean的初始化、銷毀方法覆蓋,也可以不用實現。但是前兩種bean方法配置後就必須要實現,否則報錯。

在spring中,可以採用自動裝配的方式進行bean內部私有類的自動裝配。具體的方式是對xml檔案中的beans資訊進行配置。欄位為default-autowire,值為byname,bytype,constructor三種。

byname是通過bean的id進行匹配注入的,即對於私有類的set方法,其接受引數的名稱要和xml檔案內bean的名稱相同,否則無法自動裝配。

bytype也是通過set方法進行自動裝配,不過其是通過set方法接受引數的型別,去xml檔案中進行尋找,因此即使xml檔案中沒有bean的id,也可以自動裝配。

constructor是通過構造器方法進行自動裝配的,其搜尋方式同bytype一樣,也是通過bean的型別進行尋找。

spring也可以利用註解的形式來代替配置xml檔案。

對於原先使用xml配置bean的id,類的型別以及作用域的情況,現在可以採用的是註解的形式。@component註解為基礎註解,可以註解任意bean型別。@service@repository@controller註解和component註解一樣,不過更具針對性.這四個註解都是用於對bean的定義,並且可以採用形如@component("beanid")的形式進行重新配置bean的id.

作用域的註解為@scope,預設採用的是singleton模式,也可以自己配置為prototype等模式.

值得注意的是,當使用註解的時候,需要在xml裡面新增上掃瞄範圍,如

如果bean中的私有類有set方法,則可以在set方法上使用@required註解進行自動裝配.不過,更常用的是使用@autowired註解,該註解不僅可以註解在set方法上,也可以直接註解在私有變數或者構造器方法上.並且,通過採用配置@autowired(required = false)的形式,可以使得找不到注入bean時可以不報錯.

當被標記@autowired的 私有類是乙個介面,且有多個實現類時,可以同時新增@qualifier("子類id")來限定裝配哪個子類.

@autowired還可以用來裝配set和map,當集合其中的拓展型別是介面或者父類時,便會將其子類都裝配進去.

除了@autowired註解,也可以使用@resource註解.@resource的裝配順序:

@resource後面沒有任何內容,預設通過name屬性去匹配bean,找不到再按type去匹配

指定了name或者type則根據指定的型別去匹配bean

指定了name和type則根據指定的name和type去匹配bean,任何乙個不匹配都將報錯

然後,區分一下@autowired和@resource兩個註解的區別:

@autowired預設按照bytype方式進行bean匹配,@resource預設按照byname方式進行bean匹配

@autowired是spring的註解,@resource是j2ee的註解,這個看一下匯入註解的時候這兩個註解的包名就一清二楚了

.----

@bean可以用來注釋在方法上,等價於在xml中配置bean.

@bean 標記在方法之上,方法的返回值為向springioc容器之中注入乙個bean.

其中,返回值相當於xml檔案bean標籤的class屬性,方法的名稱相當於id屬性.

我們的property屬性被放置在了方法的實現之中.

@bean註解有乙個屬性,name屬性,可以幫助我們指定bean的id的名字.

一般@bean會和@configuration一起搭配使用,@configuration用在類之上,表明該類是乙個配置類,作用等價於xml配置檔案.

@importresource@value是配合使用的,可以搭配@configuration@bean一起進行將類轉化為配置類,並進行配置.其中,@importresource("classpath:/路徑")用於設定鍵值對檔案的路徑,value採用@value($)的方式進行呼叫賦值.

類似的,在註解體系中,也有@postconstruct@predestroy註解可以用於bean的啟動和登出方法上.

Spring中Bean的配置

以下面的xml檔案舉例 第乙個bean的名稱為role,第二個bean的名稱為medicine,第三個bean的名稱為spring.chapter.mary.poison,第四個bean的名稱為spring.chapter.mary.poison 1 id和name的區別如下 id屬性具有唯一性,每...

配置Spring Ioc中的bean

設值方法注入屬性,可使用元素,也可以使用元素,但是此元素沒有name屬性 list map set 可以指定任意型別 typea type properties與map類似,但是properties集合的關鍵字和值始終是字串。需要使用標記,以多個標記作為子專案,每個標記必須定義乙個key屬性幷包含對...

Spring中Bean的配置

可以把spring看做乙個大型的工廠,而spring容器中的bean就是該工廠的產品。要想使用這個工廠生產和管理bean,就需要在配置檔案中告訴它需要哪些bean,以及需要使用何種方式將這些bean裝配到一起。xml配置檔案的根元素是beans,beans中包含了多個bean子元素,每乙個bean子...