spring MapFactoryBean返回地图的地图而不是创建地图

时间:2014-11-19 15:15:42

标签: xml spring

我想在xml中使用spring bean在map中做地图我正在做下一个: 我的目标是拥有Map> mobileMap 但是当我使用时,我会得到包装纸 mobileMap.get( “mobileMap”) 我得到了没有包装器的请求 这是我的xml:

<bean class="org.springframework.beans.factory.config.MapFactoryBean"
        id="mobileMap1111">
         <property name="targetMapClass">
            <value>java.util.HashMap</value>
        </property> 
        <property name="sourceMap">
            <map>
                <entry key="CFNetwork/221.5">
                    <bean class="org.springframework.beans.factory.config.MapFactoryBean">
                        <property name="targetMapClass">
                            <value>java.util.HashMap</value>
                        </property>
                        <property name="sourceMap">
                            <map>
                                <entry key="9.2.0">
                                    <bean class="com.betamedia.tp.api.model.UserAgentInfo">
                                        <property name="browser" value="Darwin" />
                                        <property name="isMobile" value="true" />
                                        <property name="browserVersion" value="9.2.0" />
                                        <property name="operatingSystem" value="Mac OS X " />
                                        <property name="operatingSystemVersion" value="10.5.2" />
                                    </bean>
                                </entry>
                            </map>
                        </property>
                    </bean>
                </entry>
                <entry key="CFNetwork/596.4.3">
                    <bean class="org.springframework.beans.factory.config.MapFactoryBean">
                        <property name="targetMapClass">
                            <value>java.util.HashMap</value>
                        </property>
                        <property name="sourceMap">
                            <map>
                                <entry key="12.4.0">
                                    <bean class="com.betamedia.tp.api.model.UserAgentInfo">
                                        <property name="browser" value="Darwin" />
                                        <property name="isMobile" value="true" />
                                        <property name="browserVersion" value="12.4.0" />
                                        <property name="operatingSystem" value="Mac OS X " />
                                        <property name="operatingSystemVersion" value="10.8.4" />
                                    </bean>
                                </entry>
                            </map>
                        </property>
                    </bean>
                </entry>


            </map>
        </property>
    </bean>

但我继续进入autuwired领域:地图地图的地图,必须这样做:

@Autowired
    protected Map<String, Map<String, Map<String, UserAgentInfo>>> mobileMap;

而不是

@Autowired
    protected  Map<String, Map<String, UserAgentInfo>> mobileMap;

我做错了什么

1 个答案:

答案 0 :(得分:2)

而不是使用

 @Autowired
    protected Map<String, Map<String, Map<String, UserAgentInfo>>> mobileMap;

我应该用

@Resource(name = "mobileUserAgentMap")
    protected Map<String, Map<String, UserAgentInfo>> mobileUserAgentMap;