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