2010-12-15 47 views
9

假設一個項目使用Spring並在XML中定義它的bean?它有一些在構造函數中接受Map的bean。如何在單獨的XML文件(在Spring中)定義映射屬性?

通常,這個映射被定義爲bean下的一個屬性,並且在它下面有條目。

但是如果條目列表很大?它會臃腫的XML大時間...

它可以(地圖)以某種方式定義在它的XML文件,然後由需要它的bean refferenced?怎麼樣 ?

回答

14

是的,使用<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> 
+0

我可以做相同的,但有註釋和規劃環境地政司? (一個獨立的bean類,代表地圖,註釋它用EL注入它的條目) – Belun 2010-12-15 16:36:50

3

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> 
相關問題