我想使用类型参数实例化一个通用bean,并根据此类型参数连接正确的依赖项。
假设我有:
@Named
public Parent<T> {
@Inject
Parent(Child<T> c) {
...
}
}
public interface Child<T> {}
@Named
public class ChildString implements Child<String> {}
@Named
public class ChildInteger implements Child<Integer> {}
然后我想像这样使用Parent:
@Named
public class UseParent {
@Inject
Parent<String> p;
}
Spring会抱怨“预期的单个匹配bean但找到2:childString,childInteger”。
在这种情况下连接我的bean的最佳方法是什么?
答案 0 :(得分:0)
我没有找到令人满意的方法。我现在使用的解决方案是创建Parent的子类,指定泛型类型,例如:
@Named
public ParentString {
@Inject
ParentString(Child<String> c) {
super(c);
}
}
@Named
public class UseParent {
@Inject
ParentString p;
}