gpt4 book ai didi

Spring XML内部bean问题

转载 作者:行者123 更新时间:2023-12-04 19:23:53 25 4
gpt4 key购买 nike

我创建了一个包含其他 bean 列表的 spring bean,如下所示:

<bean name="InventoryManager" class="InvManager">
<property name="slots">
<bean class="HeadSlot" />
<bean class="ShoulderSlot" />
<!-- ... -->
</property>
</bean>

但是,问题是我在其他地方使用了 @Autowired另一个类中的注释来获取实现某个接口(interface)的所有 bean 的列表,其中一些内部 bean 实现了这些接口(interface),如下所示:
@Autowired
public void registerInventoryHandlers( List<InvSlot> slots ) {
//... do some setup stuff with beans that implement the InvSlot interface.
}

这里的问题是,XML 中定义的“内部 bean”显然不是 @Autowired 的一部分。列表。但是,给所有这些插槽 bean 命名,然后从 XML 中引用它们似乎是不必要的和丑陋的。

有没有办法在另一个 bean 中定义一个 bean,但不是“内部”bean?还是有更好的方法来处理这种设计?

最佳答案

根据定义,在其他 bean 中定义的 bean 是“内部”bean。文档说:

Inner beans are always anonymous and they are always scoped as prototypes. Please also note that it is not possible to inject inner beans into collaborating beans other than the enclosing bean.



编辑以删除考虑不周、无关紧要或完全错误的内容

我建议不要 Autowiring InvSlot 的列表 bean ,你用 InvManager Autowiring 自己而是 bean 。然后你可以问 InvManager获取 InvSlot 的列表bean,同时将内部 bean 定义列表保存在 InvManager 中定义。

关于Spring XML内部bean问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1264522/

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