如何使用与父bean分离的集合数据创建spring bean?

时间:2011-02-20 11:46:12

标签: java spring configuration collections

Spring能够initialisate values of core java collection types

我有一个复杂的集合类型Map<String, Set<String>> map,它在spring config中定义了初始值:

<bean id="dao" class="ru.mypkg.dao.DaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="map">
        <map>
            <entry key="TABLE">
                <set>
                    <value>COMMENT</value>
                    <value>INDEX</value>
                </set>
            </entry>
            <entry key="VIEW">
                <set>
                    <value>COMMENT</value>
                </set>
            </entry>
        </map>
    </property>
</bean>

我希望以下一种方式重写我的配置:将它拆分为2个bean以提高可读性

<bean id="dao" class="ru.mypkg.dao.DaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="map" ref-id="myMap"/>        
</bean>

<bean id="myMap" ..????..>
        <entry key="TABLE">
                <set>
                    <value>COMMENT</value>
                    <value>INDEX</value>
                </set>
            </entry>
            <entry key="VIEW">
                <set>
                    <value>COMMENT</value>
                </set>

            </entry>
</bean>

我可以在不创建额外课程的情况下实现这一目标吗?

1 个答案:

答案 0 :(得分:11)

当然,使用<util:map>命名空间。请参阅Spring documentation C.2.2.5

创建复杂配置的另一种方法是使用@Configuration方法,或者使用FactoryBean接口。