给定该代码片段
@Service
public class MapUnitsService {
@Autowired
private List<UnitMapping> unitMappings;
...
既然类型信息在运行时消失了,spring如何知道要注入到unitMappings中呢?
发布于 2018-05-31 18:00:18
这比预期的要容易,因为反射提供了所需的信息:
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());
}
}
发布于 2018-05-31 17:32:37
基本上,spring将在该类型的应用程序上下文中注入所有bean。
发布于 2018-05-31 17:37:44
你必须定义bean:
@Bean
List<UnitMapping> unitMappings(){
return new UnitMapping();
}
Spring 4.0将自动注入考虑泛型作为@限定符的一种形式,如下所示:
@Autowired
private List<UnitMapping> unitMappings;
负责提供泛型注入的类是ResolvableType
https://stackoverflow.com/questions/50620958
复制相似问题