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>
是否可以在不创建其他类的情况下实现?
最佳答案
当然,使用<util:map>
命名空间。参见Spring documentation C.2.2.5。
创建复杂配置的另一种方法是使用@Configuration方法,或者使用FactoryBean接口(interface)。