如何在java弹簧中注入Map<String,List>?

2022-09-01 05:05:19

如何在java spring框架中注入Map?如果可能,请提供一些示例代码。

以下情况是否合法?

<property name="testMap">
    <map>
        <entry>
            <key>
                <value>test</value>
            </key>
            <value>
                <list>
                    <value>String</value>
                    <value>String</value>
                </list>
            </value>
        </entry>
    </map> 
</property>

答案 1

首先在以下位置定义一个映射:applicationContext.xml

<util:list id="list1">
    <value>foo@bar.com</value>
    <value>foo1@bar.com</value>
</util:list>

<util:list id="list2">
    <value>foo2@bar.com</value>
    <value>foo3@bar.com</value>
</util:list>

<util:map id="emailMap" value-type="java.util.List">
    <!-- Map between String key and List -->
    <entry key="entry1" value-ref="list1" />
    <entry key="entry2" value-ref="list2" />
    ...
</util:map>

然后,在诸如此类的任何豆类中使用此地图:

<bean id="myBean" class="com.sample.beans">
    <property name="emailMap" ref="emailMap" />
</bean>

答案 2

我认为您的语法是不合法的,因为在处理bean配置xml时会引发spring。org.xml.sax.SAXParseException

删除 周围的标记后,它应该可以正常工作。<value><list>

<property name="testMap">
    <map>
        <entry>
            <key>
                <value>test</value>
            </key>

             <list>
                    <value>String</value>
                    <value>String</value>
             </list>
        </entry>
    </map> 
</property>

推荐