【发布时间】:2011-05-25 23:18:27
【问题描述】:
假设一个项目使用 Spring 并在 XML 中定义它的 bean?它有一些在构造函数中接受 Map 的 bean。
通常,此映射被定义为 bean 下的属性,并且在其下具有条目。
但是如果条目列表很大怎么办?它会使 XML 膨胀很多次...
它(地图)能否以某种方式在 XML 文件中定义,然后由需要它的 bean 引用?怎么样?
【问题讨论】:
标签: spring code-injection
假设一个项目使用 Spring 并在 XML 中定义它的 bean?它有一些在构造函数中接受 Map 的 bean。
通常,此映射被定义为 bean 下的属性,并且在其下具有条目。
但是如果条目列表很大怎么办?它会使 XML 膨胀很多次...
它(地图)能否以某种方式在 XML 文件中定义,然后由需要它的 bean 引用?怎么样?
【问题讨论】:
标签: spring code-injection
是的,使用<util:map> 语法(参见docs),例如
beans1.xml
<util:map id="myMap">
<entry .../>
<entry .../>
<entry .../>
<entry .../>
</util:map>
beans2.xml
<import resource="beans1.xml"/>
<bean id="..." class="...">
<constructor-arg ref="myMap"/>
</bean>
【讨论】:
skaffman 的回答对我有用。但是,要设置 XML 命名空间,beans1.xml 应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<util:map id="myMap"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<entry key="myKey" value="myValue" />
</util:map>
【讨论】: