我有一个对象Bar
,它的构造函数需要对象Foo
(其中Foo
是接口类型)。 Bar
和Foo
都是bean。
我想@Autowire
Bar
,并在Foo
要使用的注释中定义,而不是为每种类型的{{1}创建不同的@Bean
}}
Foo
答案 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