一般的なパラメータ化されたプロパティへの注入の最善の回避策は何ですか?
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 に実装されていないのはなぜですか? この不十分さを解決することを妨げている合併症はありますか?