一个简单的解决方案是升级到Spring 4.0,因为它将自动将泛型视为的一种形式
@Qualifier,如下所示:
@Autowiredprivate Item<String> strItem; // Injects the stringItem bean@Autowiredprivate Item<Integer> intItem; // Injects the integerItem bean
实际上,你甚至可以在插入列表时自动嵌套嵌套的泛型,如下所示:
// Inject all Item beans as long as they have an <Integer> generic// Item<String> beans will not appear in this list@Autowiredprivate List<Item<Integer>> intItems;
如何运作?
新ResolvableType类提供了实际使用泛型类型的逻辑。你可以自己使用它来轻松浏览和解析类型信息。上的大多数方法
ResolvableType本身都会返回
ResolvableType,例如:
// Assuming 'field' refers to 'intItems' aboveResolvableType t1 = ResolvableType.forField(field); // List<Item<Integer>> ResolvableType t2 = t1.getGeneric(); // Item<Integer>ResolvableType t3 = t2.getGeneric(); // IntegerClass<?> c = t3.resolve(); // Integer.class// or more succinctlyClass<?> c = ResolvableType.forField(field).resolveGeneric(0, 0);



