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

Ara*_*ind 36 java spring

如何在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>
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 31

在您的内部首先定义这样的地图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>
Run Code Online (Sandbox Code Playgroud)

然后在你的任何bean中使用这个Map,如下所示:

<bean id="myBean" class="com.sample.beans">
    <property name="emailMap" ref="emailMap" />
</bean>
Run Code Online (Sandbox Code Playgroud)


Ken*_*han 22

我认为org.xml.sax.SAXParseException在处理bean配置xml时,你的语法不像弹簧抛出那样合法.

删除<value>周围的标签 后它应该工作<list>.

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

             <list>
                    <value>String</value>
                    <value>String</value>
             </list>
        </entry>
    </map> 
</property>
Run Code Online (Sandbox Code Playgroud)


msa*_*gel 6

这是我的例子:

<bean class="com.common.handlermgmnt.HandlerMapAdder">
    <constructor-arg index="0" type="java.util.Map">
        <map key-type="java.lang.String" value-type="com.common.ViewWidget">
            <entry key="DefaultView">
                <bean class="com.common.DefaultViewWidget"/>
            </entry>
            <entry key="AnotherView">
                <bean class="com.common.AnotherViewWidget"/>
            </entry>
        </map>
    </constructor-arg>
    <constructor-arg index="1" type="com.common.handlermgmnt.HandlerManager" ref="widget_handlerManager"/>
</bean>
Run Code Online (Sandbox Code Playgroud)