大家好,感谢您的帮助。
我遇到一个问题,Spring无法自动装配ArrayBlockingQueue类型的参数化成员变量。
这是java代码:
@Controller
public class SomeController
{
@Autowired
private ArrayBlockingQueue<SomeCustomType> myQueue;
}
并在spring配置中使用xml:
<bean id="myQueue" class="java.util.concurrent.ArrayBlockingQueue">
<constructor-arg value="10"/>
</bean>
为ArrayBlockingQueue指定类型(SomeCustomType)似乎会混淆spring无法找到匹配并且不执行自动装配。
有关如何使其发挥作用的任何想法?我知道我可以创建自己的包装类(围绕ArrayBlockingQueue),但没有参数化,但我宁愿没有更好的解决方法。
答案 0 :(得分:12)
如果您尝试使用注释自动连接集合,请使用@Resource
代替@Autowired
。
为了满足@Autowired
集合依赖性,IoC容器会查找正确类型的元素以构建此类集合。换句话说,它不会查找集合本身,而是从其他bean构建集合。
有关更多信息,请参阅Spring文档,例如。 here