gpt4 book ai didi

java - Spring 如何注入(inject)列表作为构造函数参数

转载 作者:行者123 更新时间:2023-12-01 12:35:37 26 4
gpt4 key购买 nike

我有这个:

@Named
@Singleton
public class MyDefaultDef {

@Inject
public MyDefaultDef(SomeRef someRef, List<AnotherRef> anotherRefs) {
//...
}
//...
}

问题1:[main] List<AnotherRef> anotherRefs 的 Autowiring 如何工作作为构造函数参数?

我的意思是,如果我想用 xml 替换该 bean 定义,我必须指定列表中的每个元素。 IE。

<constructor-arg>
<list>
<ref bean="..."/>
<ref bean="..."/>
</list>
</constructor-arg>

但是如果有注释,Spring 从哪里获取这些元素呢?

问题2: 如何替换MyDefaultDef bean 定义到 xml?

最佳答案

当 Spring 需要 Autowiring List<SomeBean> 时,它会查找其 BeanFactory 中的所有 beans并检索所有 SomeBean 类型的内容。然后它创建一个 List并将它们添加到其中。然后它会 Autowiring 它。

Spring XML 中无法按类型进行此列表。你需要妥协。你就这样离开了你的类(class)

public class MyDefaultDef {

@Inject
public MyDefaultDef(SomeRef someRef, List<AnotherRef> anotherRefs) {
//...
}
//...
}

并简单声明

<bean class="com.example.MyDefaultDef" autowire="constructor"/>

Spring 最终将使用上面的构造函数。

关于java - Spring 如何注入(inject)列表作为构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25627534/

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