Spring:如何将4个bean中的任何一个注入另一个bean

时间:2013-12-18 21:12:45

标签: java spring

我有一个对象Bar,它的构造函数需要对象Foo(其中Foo是接口类型)。 BarFoo都是bean。

我想@Autowire Bar,并在Foo要使用的注释中定义,而不是为每种类型的{{1}创建不同的@Bean }}

Foo

2 个答案:

答案 0 :(得分:2)

试试这个,它没有经过测试......

 public class BarFactory
    {   
       public static Bar createBar(Foo foo)
       {
          Bar bar= new Bar();
          bar.setFoo(foo);
          return bar;
       }
    }

<bean id="bar1" class="my.company.BarFactory"
                          factory-method="createBar">
    <constructor-arg ref="foo1"/>
</bean>

<bean id="bar2" class="my.company.BarFactory"
                          factory-method="createBar">
    <constructor-arg ref="foo2"/>
</bean>

Java配置:

@Configuration
public class Conf {

   //define foo1 and 2

    @Bean
    public Bar getBar1() {
        return BarFactory.createBar(foo1)
    }

    @Bean
    public Bar getBar2() {
        return BarFactory.createBar(foo2)
    }

}

答案 1 :(得分:0)

您可以在不指定条形类的限定符的情况下执行此操作。但是这应该不是一个问题,有两个带有限定符的条,它们有相关的构造函数args