gpt4 book ai didi

java - 使用 Spring 通过构造函数 Autowiring 集合

转载 作者:IT老高 更新时间:2023-10-28 13:49:19 26 4
gpt4 key购买 nike

如标题所述,我遇到了一个看似简单的问题。这是我的课:

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" />

这无法运行:

No matching bean of type [java.lang.String] found for dependency [collection of java.lang.String]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=bar)}

请注意,如果我将其他参数添加到我的构造函数,它工作正常。如果我使用 setter 注入(inject),它工作正常。我确定我错过了一些明显的东西……你知道吗?

最佳答案

使用 @Autowired 注释无法 Autowiring 集合。 Autowiring 集合意味着“提供特定类型的所有 bean”。使用 JSR-250 @Resource 注释,您可以声明您希望通过资源名称而不是类型来注入(inject)资源。或者你显式地注入(inject)依赖。

[...] beans which are themselves defined as a collection or map type cannot be injected via @Autowired since type matching is not properly applicable to them. Use @Resource for such beans, referring to the specific collection/map bean by unique name.

the Spring documentation了解更多详情。

关于java - 使用 Spring 通过构造函数 Autowiring 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com