gpt4 book ai didi

java - Spring beans 的键为 Map

转载 作者:行者123 更新时间:2023-12-02 06:35:52 24 4
gpt4 key购买 nike

尝试在 Spring 中实例化 Map 我发现了一个奇怪的(对我来说)行为。我使用以下 XML 片段来创建 map :

<bean id="fooBean" class="it.arch.fe.util.Foo">
<property name="prop1" value="val1"></property>
<property name="prop2" value="val2"></property>
</bean>

<bean id="barBean" class="it.arch.fe.util.Foo">
<property name="prop1" value="val3"></property>
<property name="prop2" value="val4"></property>
</bean>

<bean id="mapOfFoos" class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="targetMapClass">
<value>java.util.HashMap</value>
</property>
<property name="sourceMap">
<map>
<entry key="foo" value-ref="fooBean" />
<entry key="bar" value-ref="barBean" />
</map>
</property>
</bean>

我设法在代码中实例化并 Autowiring 此 map ,但我遇到了按键问题:

我想要一个带有键“foo”和“bar”的 map ,但它们似乎是“fooBean”和“barBean”。

这应该发生吗?有没有办法使用“key”属性作为键,因为这看起来是显而易见的行为?

(我不想将 bean 的名称更改为 foo 和 bar,因为我已经用这些名称声明了两个 bean,并且我想要遵循的逻辑需要键为“foo”和“bar” )

编辑:从 Trever Shick 的回答开始,我找到了解决实际问题的方法,但我仍在尝试理解为什么会发生这种情况。

最佳答案

只使用 map ,不要为您的mapOfFoos使用MapFactoryBean

<beans xmlns:util="http://www.springframework.org/schema/"
xsi:schemaLocation="http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd">

<util:map id="mapOfFoos">
<entry key="foo" value-ref="fooBean" />
<entry key="bar" value-ref="barBean" />
</util:map>

关于java - Spring beans 的键为 Map<String,Foo>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19661300/

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