java - 参数化集合的Spring Autowiring

标签 java spring

大家好,感谢您的提前帮助。

我遇到一个问题,Spring 无法 Autowiring 类型为 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,它找不到匹配项并且不执行 Autowiring 。

关于如何让它发挥作用的任何想法?我知道我可以创建自己的未参数化的包装类(围绕 ArrayBlockingQueue),但如果有更好的方法来解决这个问题,我宁愿不这样做。

最佳答案

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

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

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

关于java - 参数化集合的Spring Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655214/

相关文章:

java - 列表内列表的 ValidatorUtils

spring - 在 Spring 中在运行时动态声明 bean

java - 是否可以在上下文配置中指定一个 @Component 类,以便自动解析它的依赖项?

java - Rxjava 2 Maybe.toSingle 错误

java - Android:无法在原始类型 int 上调用 toString()

java - 在java中实现接口(interface)

java - 测试 Spring Controller : Invoke service methods or mock results

java - 配置单元查询无法通过 jdbc 生成结果集

Java : Why can't I declare an array as a simple Object?

Spring Security 自定义 PermissionEvaluator 配置无法正常工作