6

这就是我的意思,请参阅以下 spring XML 文件:

<bean id = 'a' class="A">
   <property name="mapProperty">
       <map>
          <entry key="key1"><value>value1</value></entry>
       </map>
   </property>
</bean>

我的课程如下所示:

class A {
   HashMap mapProperty

}

如何在 Spring XML 文件中判断要注入的 Map 类型为 java.util.HashMap ?或者一般来说我可以为 Map 提供类名吗?

请注意,我不能更改class A使用Map而不是HashMap

提前致谢 !!

4

3 回答 3

12

您可以使用util:map

<util:map id="someId" map-class="java.util.HashMap">
    <entry key="key1">
        <value>value1</value>
    </entry>
</util:map>

<bean id="a" class="A">
    <property name="mapProperty" ref="someId">
    </property>
</bean>

不要忘记添加util命名空间。

于 2013-10-17T20:55:40.400 回答
6

您可以使用架构中util:map的标签。util这是一个例子:

<util:map id="utilmap" map-class="java.util.HashMap">
    <entry key="key1" value="value1"/>
    <entry key="key2" value="value2"/>
</util:map>

<bean id = 'a' class="A">
   <property name="mapProperty" ref="utilmap" />
</bean>

顺便说一句,你不应该使用 raw type HashMap。改用参数化类型 - HashMap<String, String>

于 2013-10-17T20:58:43.977 回答
2

要扩展Sotirios Delimanolis 的答案:请参阅此示例以了解如何包含util命名空间:

<?xml version="1.0" encoding="UTF-8"?>

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

请注意,您还需要修改schemaLocation;)

于 2019-07-25T09:54:06.737 回答