尝试在 Spring 中实例化 Map 我发现了一个奇怪的(对我而言)行为。我正在使用以下 XML 来创建地图:
<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>
我设法在我的代码中实例化并自动装配此 Map,但我遇到了键问题:
我想要一个带有键“foo”和“bar”的地图,但它们似乎是“fooBean”和“barBean”。
这应该发生吗?有没有办法将“键”属性用作键,因为这似乎是显而易见的行为?
(我不想将 bean 的名称更改为 foo 和 bar,因为我已经声明了两个具有这些名称的 bean,并且我想遵循的逻辑需要键是“foo”和“bar”)
编辑:从 Trever Shick 的回答开始,我找到了解决实际问题的方法,但我仍在试图了解为什么会发生这种情况。