Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中注入List的实例? 什么有效_Java_Spring_Spring Ioc - Fatal编程技术网

Java 如何在Spring中注入List的实例? 什么有效

Java 如何在Spring中注入List的实例? 什么有效,java,spring,spring-ioc,Java,Spring,Spring Ioc,假设我有一个ArrayList的Springbean定义: 判定元件 EN 现在我可以将其注入各种豆类中,例如: @控制器 类控制器{ @自动连线 公共控制器(ArrayList可用语言){ // ... } } 这很有效 它是如何破碎的 但是,如果我稍微更改一下控制器,并使用类型List而不是ArrayList如下所示: @控制器 类控制器{ @自动连线 公共控制器(列出可用语言){ // ... } } 然后,取而代之的是,我得到了String类型的所有bean的列表,而不是我定义的

假设我有一个ArrayList的Springbean定义:


判定元件
EN
现在我可以将其注入各种豆类中,例如:

@控制器
类控制器{
@自动连线
公共控制器(ArrayList可用语言){
// ...
}
}
这很有效

它是如何破碎的 但是,如果我稍微更改一下控制器,并使用类型
List
而不是
ArrayList
如下所示:

@控制器
类控制器{
@自动连线
公共控制器(列出可用语言){
// ...
}
}
然后,取而代之的是,我得到了
String
类型的所有bean的列表,而不是我定义的bean。然而,我实际上想将我的列表包装成一个不可修改的列表,但这只有在我将依赖关系降级为列表时才可能实现

到目前为止,我们发现了一些变通方法 以下XML文件:


判定元件
EN
与此控制器一起工作:

@控制器
类控制器{
@自动连线
公共控制器(对象可用语言){
列出列表=(列出)可用语言;
}
}
虽然这样做有效,但额外的类型转换是丑陋的

迄今为止的调查结果 我想有一个问题似乎会引起所有的麻烦。当参数是扩展
集合的接口时,它会创建特殊行为。因此,我可以通过使用
对象
或具体实现作为参数类型来解决问题

问题:
有没有办法直接向bean中注入列表?如何使用?

使用@Qualifier将向bean注入给定的限定符。您可以命名您想要成为bean的列表,这将很好地工作

您可以使用名称空间
util
。看看asnwer。@josivan:据我所知,这将改变我定义列表的方式。然而,清单的定义不是问题所在。是注入导致了问题,还是我遗漏了
util
的功能?
util:list
是Spring上下文中的常规bean,您可以正常地注入它。我注意到您混合了注释和XML,然后在构造函数中使用
@Qualifier
。例如
@Qualifier(“myList”)
我会使用像“LanguageList”这样的具体类型。我知道这不能回答你的问题,但它可能会解决你的问题。我几天前也有同样的问题。请检查:。使用
@Resource
注释代替
@Autowired
,它查找bean,但查找其名称,而不是y类型。