鉴于代码片段
@Service
public class MapUnitsService {
@Autowired
private List<UnitMapping> unitMappings;
...
Spring是如何知道注入unitMappings的内容,因为类型信息在运行时消失了?
答案 0 :(得分:1)
比预期更容易,因为反射提供了所需的信息:
public class Main {
List<String> test = new ArrayList<>();
public static void main(String[] args) throws IOException, NoSuchFieldException {
Field field = Main.class.getDeclaredField("test");
System.out.println(field.getGenericType().getTypeName());
}
}
答案 1 :(得分:0)
基本上spring会在该类型的应用程序上下文中注入所有bean。
答案 2 :(得分:0)
你必须定义bean:
@Bean
List<UnitMapping> unitMappings(){
return new UnitMapping();
}
Spring 4.0将自动注入泛型作为@Qualifier的一种形式,如下所示:
@Autowired
private List<UnitMapping> unitMappings;
负责通用注入的类是ResolvableType