0

我想用一个类型参数实例化一个泛型 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”。

在这种情况下,连接我的豆子的最佳方法是什么?

4

1 回答 1

0

我还没有找到令人满意的方法来做到这一点。我现在使用的解决方案是创建指定泛型类型的 Parent 的子类,例如:

@Named
public ParentString {

   @Inject
   ParentString(Child<String> c) {
          super(c);
   }

}

@Named
public class UseParent {

   @Inject
   ParentString p;

}
于 2014-03-05T12:05:22.360 回答