spring父子配置(抽象bean)

时间:2014-08-14 13:04:10

标签: spring parent-child abstract

我对春天的豆子有疑问。

有父类Parent,带有构造函数(没有任何setter)。

class abstract Parent{
    procected Something someth;

    public Parent(Object1 obj1 , Object2 obj2 , Object3 obj3){
        someth.setObj1(obj1);
        someth.setObj2(obj2);
        someth.setObj3(obj3);
    }
}

class Child extends Parent implements SoneInterface{

     public Parent(Object1 obj1 , Object2 obj2 , Object3 obj3){
          supper(obj1,obj2,obj3);
     }

     public void methodFormSoneInterface(){
          ....................
          someth.do();
     }
}

Object1 obj1 - 它与任何子实例的对象相同。 Object2 obj2,Object3 obj3-对于任何实例都可以是双向的

如果我有父母的设定者(我无法改变它),我可以声明抽象bean,为它设置Object1 obj1,然后我可以将它用作抽象bean(仅设置obj2和obj3参考/值)。

是否有机会使用obj1 param在xml父/抽象bean中配置,为子项定义任何正确的值(仅设置obj2和obj3)?

由于

2 个答案:

答案 0 :(得分:0)

可以部分构造一个抽象bean。你可能想试试这个。

<bean id="parentBean" abstract="true">
    <property name="obj1" ref="obj1Ref" /> 
</bean>

<bean id="childBean" parent="parentBean" class="com.childClass">
    <property name="obj2" ref="obj2Ref" /> 
    <property name="obj3" ref="obj3Ref" /> 
</bean>

答案 1 :(得分:0)

它应该像这样工作,其中构造函数中的第一个参数是您希望它在父级别设置的那个,而另外两个可以在子级别设置:

<bean id="parent" class="com.foo.bar.Parent" abstract="true">
    <constructor-arg index="0" value="123" />
</bean>

<bean id="child1" class="com.foo.bar.Child" parent="parent">
    <constructor-arg index="1" value="234" />
    <constructor-arg index="2" value="456" />
</bean>

<bean id="child2" class="com.foo.bar.Child" parent="parent">
    <constructor-arg index="1" value="aaa" />
    <constructor-arg index="2" value="bbb" />
</bean>