首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >spring如何知道要在泛型列表中注入什么?

spring如何知道要在泛型列表中注入什么?
EN

Stack Overflow用户
提问于 2018-05-31 17:26:45
回答 3查看 20关注 0票数 0

给定该代码片段

代码语言:javascript
复制
@Service

public class MapUnitsService {
    @Autowired  
    private List<UnitMapping> unitMappings;
...

既然类型信息在运行时消失了,spring如何知道要注入到unitMappings中呢?

EN

回答 3

Stack Overflow用户

发布于 2018-05-31 18:00:18

这比预期的要容易,因为反射提供了所需的信息:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-05-31 17:32:37

基本上,spring将在该类型的应用程序上下文中注入所有bean。

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 17:37:44

你必须定义bean:

代码语言:javascript
复制
@Bean
List<UnitMapping> unitMappings(){
    return new UnitMapping(); 
} 

Spring 4.0将自动注入考虑泛型作为@限定符的一种形式,如下所示:

代码语言:javascript
复制
    @Autowired  
    private List<UnitMapping> unitMappings;

负责提供泛型注入的类是ResolvableType

Spring Framework 4.0 and Java Generics

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50620958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档