当前位置: 首页 > 知识库问答 >
问题:

Spring父子配置(抽象bean)

丌官皓君
2023-03-14

我有一个关于春豆的问题。

有父类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-对于任何实例都可以是不同的

若我为父对象使用setter(我不能更改它),我可以声明抽象bean,为它设置object1obj1,然后我可以将它用作抽象bean(只设置obj2和obj3引用/值)。

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

谢啦

共有2个答案

经景辉
2023-03-14

它是可能的部分构造一个抽象豆.你可能想要尝试这个。

<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>
呼延鸿畅
2023-03-14

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

<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>
 类似资料:
  • 我正在开发一个REST API与Spring引导v2.0.0。RELEASE与mongoDB耦合。使用sping-boot-starter-data-mongob连接MongoDB im。 正在申请中。属性我可以更改与mongodb相关的基本配置,但我的问题是,当涉及高级属性时,管理这些配置的最佳方式应该是什么。例如,不能通过应用程序更改每个主机的连接属性。财产。 因此,我使用了AbstractM

  • 在我们的软件,我们使用spring Java配置。我们有一个设置,其中一个配置扩展了一个抽象配置。请看一下这个测试案例: 其思想是,覆盖了并且在创建的ApplicationContext中只有一个类型的bean位于名称之下。 结果是: 所以它说,有两个bean(两个实例--每个名称一个)--甚至更令人吃惊的是:创建这两个bean都使用了相同的方法()。 这种行为在我们看来很奇怪:我们希望sprin

  • -- 我想创建一个工厂,就像抽象工厂模式一样,我可以调用,以获得我在Spring XML中配置的任何实现的规模: 但是,使用这种方法,我如何配置ScaleFactory应该使用Spring XML中的哪个实现呢? -- 另一种方法是在我的服务中使用属性而不是ScaleFacotry,并使用ScaleFactory,如下所示: 但是这个工厂就毫无意义了,因为我还可以运行。

  • 这里是Java新手。我有两个类(让我们称它们为A和B)和一些方法(例如...))它们包含的代码非常相似,因为它们实际上共享相同的代码。我决定让我的代码更有效,并使用某种父抽象类C,类A、B将继承它。 这是我的问题。方法 doSomething 在类 A 中具有以下签名: < code>doSomething(VievForA视图,...) 而B类中的相同方法do的签名如下: < code>doSo

  • 当我启动应用程序时,我得到以下错误:

  • 我的Spring Batch配置有5个步骤,除了阅读器之外,所有步骤都是相同的。有没有一种方法可以把步骤的所有其他部分抽象成“父”步骤,这样我就不需要重复所有的事情?我知道这可以用XML完成,但是我不知道java的等价物。 以下是其中一个步骤: 以下是其中一位读者的定义: