我有一个看似简单的问题,如标题所示。这是我的课程类型:
public class Foo {
@Autowired
public Foo(@Qualifier("bar") Set<String> bar) {
// ...
}
}
我尝试使用以下 spring 上下文运行:
<context:annotation-config />
<util:set id="bar">
<value>tata</value>
<value>titi</value>
<value>toto</value>
</util:set>
<bean id="foo" class="Foo" />
这无法运行:
没有匹配类型的 bean
找到了 [java.lang.String]
依赖性[集合
java.lang.String]:预计至少 1
符合自动装配资格的 bean
这种依赖性的候选者。
依赖注释:
{@org.springframework.beans.factory.annotation.Qualifier(value=bar)}
请注意,如果我向构造函数添加其他参数,它就可以正常工作。如果我使用 setter 注入,效果很好。我确信我错过了一些明显的东西......你知道吗?
使用以下方法无法自动装配集合@Autowired
注解。自动装配集合意味着“提供特定类型的所有 bean”。使用 JSR-250@Resource
注释,您可以声明您想要通过其名称而不是其类型注入资源。或者您显式注入依赖项。
[...] 本身定义为集合或映射类型的 bean 不能通过注入@Autowired
因为类型匹配不适用于它们。使用@Resource
对于此类 bean,通过唯一名称引用特定的集合/映射 bean。
See Spring 文档 http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-autowired-annotation更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)