必要條件:1、子bean必須與父bean保持相容,也就是說子bean中必須有父bean定義的所有屬性。
2、父bean必須是抽象bean或者定義lazy-init=true也就是不讓bean工廠例項化該bean
注:好多人將parent指向的類說是子類繼承了父類,其實說法不正確,正確的說法應該是子bean父bean而不是子類父類,因為如果子bean指定的類已經繼承了其他的類,那麼在這裡一樣可以有乙個父bean,(如果真像大家說的那樣那不成多重繼承了嗎)
1、如果父bean有class屬性,而子bean沒有,那麼子bean的class就和父bean相同 例如:
1<
beans
>
2...
3<
bean
id="testproxy"
class
="org.springframework.transaction.interceptor.transactionproxyfactorybean"
4abstract
="true"
>
//********(1)
5<
property
name
="transactionmanager"
>
6<
ref
bean
="transactionmanager"
/>
7property
>
8<
property
name
="proxytargetclass"
value
="true"
/>910
<
property
name
="transactionattributes"
>
11<
props
>
12<
prop
key="*insert*"
>propagation_required
prop
>
13<
prop
key="*select*"
>propagation_required,readonly
prop
>
14props
>
15property
>
16bean
>
1718
<
bean
id="test"
parent
="testproxy"
>
19<
property
name
="target"
>
20<
ref
bean
="testit"
/>
//******(2)
21property
>
22bean
>
23beans
>
為了解決**的低重用,我在testproxy裡沒有定義target屬性,targe屬性t的定義放在了外面乙個bean裡,這個bean繼承了testproxy(parent),這樣bean中parent中已注入的屬性不需要再注入,在子bean中只需要注入還沒有注入的屬性即可!注意:也只能注入
transactionproxyfactorybean
中有的屬性,重複了覆蓋,但是不能注入其他任何屬性
2、如果父bean沒有定義class屬性,子bean必須定義class屬性,這時候父bean實際上僅僅是乙個純模版或抽象bean,僅僅充當子定義的父定義。若要嘗
1<
beans
>
2<
bean
id="parentbean"
>
3<
property
name
="name"
><
value
>parent
value
>
property
>
4<
property
name
="age"
><
value
>1
value
>
property
>
5bean
>
6<
bean
id="sunbean"
class
="sunbean"
7parent
="parentbean"
init-method
="initialize"
>
8<
property
name
="name"
><
value
>override
value
>
property
>
9bean
>
試單獨使用這樣的parent bean(比如將它作為其他bean的ref屬性而引用,或者直接使用這個parent bean的id呼叫getbean()方法),將會導致乙個錯誤。這個父bean的功能也就是為了減少配置的書寫而採用的,舉例如下,如果有n個bean都要配置m個相同的屬性,如果不採用父bean概念,將要配置這m個屬性n次,採用父bean方式將這共同的m個屬性配置在父bean中,而在這n個bean中都增加乙個parent屬性 指向那個bean就可以。(這裡的m個屬性也要滿足必要條件,都在子bean對應的類中定義)
spring bean parent屬性詳解
必要條件 子bean必須與父bean保持相容,也就是說子bean中必須有父bean定義的所有屬性。父bean必須是抽象bean或者定義lazy init true也就是不讓bean工廠例項化該bean 注 好多人將parent指向的類說是子類繼承了父類,其實說法不正確,正確的說法應該是子bean父b...
spring bean parent屬性詳解
必要條件 1 子bean必須與父bean保持相容,也就是說子bean中必須有父bean定義的所有屬性。2 父bean必須是抽象bean或者定義lazy init true也就是不讓bean工廠例項化該bean 注 好多人將parent指向的類說是子類繼承了父類,其實說法不正確,正確的說法應該是子be...
spring bean parent屬性詳解
必要條件 1 子bean必須與父bean保持相容,也就是說子bean中必須有父bean定義的所有屬性。2 父bean必須是抽象bean或者定義lazy init true也就是不讓bean工廠例項化該bean 注 好多人將parent指向的類說是子類繼承了父類,其實說法不正確,正確的說法應該是子be...