Spring IOC w / generics - 根据依赖的类型参数注入依赖项

时间:2014-02-24 11:39:28

标签: dependency-injection spring-ioc

我想使用类型参数实例化一个通用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的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

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

@Named
public ParentString {

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

}

@Named
public class UseParent {

   @Inject
   ParentString p;

}