注入通用参数化属性的最佳解决方法是什么?
Spring Jira中记录的简单示例:
@Component
public abstract class AbstractFoo<V extends Bar> {
@Autowired
protected V bar;
}
@Component
public ConcreteFoo1 extends AbstractFoo<ConcreteBar1> {
}
@Component
public ConcreteFoo2 extends AbstractFoo<ConcreteBar2> {
}
当我有这样的抽象AbstractFoo
类并尝试确定应该通过generecis(ConcreteFoo1
,ConcreteFoo1
)注入的Spring bean时,Spring会抛出异常,例如:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'foo.ConcreteFoo1'
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [bar.Bar] is defined:
expected single matching bean but found 2: [concreteBar1, concreteBar2]
我在 Spring 3.2.1 中测试了类似的场景。这个问题的最佳解决方法是什么?
2009 年 3 月 10 日报告了此问题。
为什么这个功能还没有在 Spring 中实现?是否有任何并发症阻止解决这个不足?