2017-03-16 47 views
2

是否可以重寫/替換父抽象bean?Spring:重寫父bean

E.G: 1 XML:

<bean id="inheritedTestBean" abstract="true" class="org.springframework.beans.TestBean"> 
</bean> 

<bean id="inheritsWithDifferentClass" class="org.springframework.beans.DerivedTestBean" parent="inheritedTestBean"> 
</bean> 

第二屆XML

<bean id="inheritedTestBean2" abstract="true" class="org.springframework.beans.TestBean2"> 
</bean> 
<alias name="inheritedTestBean2" alias="inheritedTestBean" /> 

TestBean2繼承testBean這個。

回答

1

任何給定的Spring上下文對於任何給定的id或名稱只能有一個bean。在XML id屬性的情況下,這由模式驗證強制執行。在name屬性的情況下,這是由Spring的邏輯強制執行的。

但是,如果一個上下文是由兩個不同的XML描述符文件構造而來的,並且這兩個文件都使用了一個id,那麼將會「覆蓋」另一個文件。確切的行爲取決於文件在被上下文加載時的排序。

所以雖然有可能,但並不推薦。這很容易出錯並且很脆弱,如果你改變了一個而不是另一個的ID,你將不會從Spring那裏得到任何幫助。

+0

在第一個稱爲XML配置文件: <豆ID = 「myBeanId」 類= 「com.blabla」> <屬性名= 「myList中」 REF = 「myList中」/> 在第二個稱爲XML配置文件

0

即使你能做到這一點,它會很混亂。有@Primary註釋,你可以看看那個。或者你可以看一下spring配置文件,所以你有一個默認的bean實現,然後每個其他配置文件都有一個不同的實現爲你的抽象類。