2017-03-16 12 views
2

親抽象Beanをオーバーライド/置き換えることは可能ですか?Spring:親Beanをオーバーライド

例えば: 第一の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または名前に対して1つのBeanしか持てません。 XML id属性の場合、これはスキーマの検証によって強制されます。 name属性の場合、これはSpringのロジックによって強制されます。

しかし、コンテキストが2つの異なるXML記述子ファイルから構成され、idが両方のファイルで使用されている場合、一方が他方を上書きします。正確な動作は、コンテキストによってロードされるときのファイルの順序に依存します。

だから、それが可能だが、それはお勧めしません。エラーが発生しやすく、壊れやすいので、IDのIDを変更するとSpringの助けを借りることはできません。

+0

: の <プロパティ名= "はmyList" REF = "はmyList" /> 2番目と呼ばれるXML設定ファイルを:リストID = "はmyList"> –

0

これを行うことができたとしても、非常に混乱します。 @Primary注釈があります。ご覧になることができます。または、春のプロファイルを見ることができるので、デフォルトのBean実装があり、その後は他のすべてのプロファイルに抽象クラスの実装が異なります。あなたの最初と呼ばれるXML設定ファイルで

関連する問題