【发布时间】:2013-04-09 04:06:28
【问题描述】:
注入通用参数化属性的最佳解决方法是什么?
来自record in 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 注入的Spring bean(ConcreteFoo1,ConcreteFoo1)时,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 中实现?是否有任何并发症阻止解决这一不足?
【问题讨论】:
标签: spring generics dependency-injection autowired