Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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自动连接_Java_Spring - Fatal编程技术网

Java 参数化集合的Spring自动连接

Java 参数化集合的Spring自动连接,java,spring,Java,Spring,大家好,提前谢谢你们的帮助 我遇到了一个问题,Spring无法自动关联ArrayBlockingQueue类型的参数化成员变量 以下是java代码: @Controller public class SomeController { @Autowired private ArrayBlockingQueue<SomeCustomType> myQueue; } @控制器 公共类控制器 { @自动连线 专用阵列锁定队列myQueue; } 在spring配置xml中

大家好,提前谢谢你们的帮助

我遇到了一个问题,Spring无法自动关联ArrayBlockingQueue类型的参数化成员变量

以下是java代码:

@Controller
public class SomeController
{
    @Autowired
    private ArrayBlockingQueue<SomeCustomType> myQueue;
}
@控制器
公共类控制器
{
@自动连线
专用阵列锁定队列myQueue;
}
在spring配置xml中:

<bean id="myQueue" class="java.util.concurrent.ArrayBlockingQueue">
    <constructor-arg value="10"/>
</bean>

为ArrayBlockingQueue指定类型(SomeCustomType)似乎会混淆spring,因为spring无法找到匹配项,并且不会执行自动关联


你有什么办法让它发挥作用吗?我知道我可以创建自己的包装类(围绕ArrayBlockingQueue),该类没有参数化,但我不希望有更好的方法来解决这个问题。

如果您试图用注释自动连接集合,那么使用
@Resource
而不是
@Autowired

为了满足
@Autowired
集合依赖关系,IoC容器将查找正确类型的元素以从中构建这样的集合。换句话说,它不寻找集合本身,而是用其他bean构建集合


有关更多信息,请参阅Spring文档,例如。

您收到的错误消息是什么?这没有理由不起作用。您应该意识到,由于Spring在运行时实例化了类,参数化类型对Spring没有任何意义——它看不到参数。是的,这也是我假设的。Spring不应该关心参数化类型,但它确实会因此而感到困惑。以下是错误消息的一部分:嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项类型为[java.util.concurrent.ArrayBlockingQueue]的匹配bean您可以尝试按名称指定Autowire。