我有一个用例,我不能使用 Qualifier 注释(至少根据我的理解),但我仍然需要在 Autowire 的两个 bean 之间进行解析。我不能使用限定符,因为我不知道 FooBar 的哪个实现将在 Foo 类中使用。这是我的设置:
class Foo
{
@Autowired
private FooBar a;
public Foo(FooBar aa) {a = aa; }
}
interface FooBar
{}
class FooBarA implements FooBar
{}
class FooBarB implements FooBar
{}
弹簧配置:
<bean id="beanA" class="FooBarA"/>
<bean id="beanB" class="FooBarB"/>
<bean id="bean1" class="Foo">
<constructor-arg><ref bean="beanA"/></constructor-arg>
</bean>
<bean id="bean2" class="Foo">
<constructor-arg><ref bean="beanB"/></constructor-arg>
</bean>
这会引发一个错误,指出它无法解析类“Foo”中变量“a”的 bean,因为有两个 bean(beanA 和 beanB),即使我已明确指定在 bean1 和 bean2 的每种情况下使用哪个 FooBar 派生.