0

我有一门课程接受 2 个对象注入。其中 1 个将通过其他 bean ref 注入,而另一个基于 bean 调用注入。我想使用 spring 实例化一个对象。我怎样才能做到这一点 ?

我试过这样做:

我的豆类:

class MyBean{
    Injection1 ijn1;
    MyBean(Injection1 ijn1,Injection2 ijn2){
      this.ijn1=ijn1;
      this.ijn2=ijn2;
    }
}

豆类.xml

<bean name="myBean" class="MyBean" scope="prototype">
    <constructor-arg>
        <null />
    </constructor-arg>
    <constructor-arg>
        <ref bean="injection2" />
    </constructor-arg>
</bean>


<bean name="injection2" class="Injection2">
</bean>

申请代码:

MyBean getMyBean(Injection ijn1) {
    return (MyBean)context.getBean("myBean", new Object[] { ijn1 })
}

但这不起作用。

有小费吗 ?

4

1 回答 1

1

您的代码不起作用,因为 spring 会寻找;MyBean之类的构造函数MyBean(Injection1 ijn1)。你必须以injection2这种方式通过。

MyBean getMyBean(Injection ijn1) {
    return (MyBean)context.getBean("myBean", new Object[] { ijn1, context.getBean("injection2") })
}

如果你想使用你的代码,另一种方式是通过这种方式进行部分注入:

class MyBean{
    Injection1 ijn1;
    Injection2 ijn2;
    MyBean(Injection1 ijn1){
      this.ijn1=ijn1;
    }

    public void setIjn2(Injection2 ijn2I ) {
      this.ijn2 = ijn2;
    }
}

并在 xml

<bean name="myBean" class="MyBean" scope="prototype">
  <property name="inj2" ref="injection2" />
</bean>


<bean name="injection2" class="Injection2">
</bean>
于 2013-08-28T17:53:12.843 回答