2012-12-23 49 views
1

假設我有一個類MyClass,它可以通過String實例化,或者它有一個類中的預定義靜態實例。是否可以使用Spring配置創建集合?

事情是這樣的:

public class MyClass { 

    public final static MyClass A = new MyClass("A"); 
    public final static MyClass B = new MyClass("B"); 
    public final static MyClass C = new MyClass("C"); 
    ... 

    public MyClass(String name) { 
     ... 
    } 
} 

是否有可能創建Spring配置莫名其妙的ArrayList<MyClass>豆?像

<bean id="sequence" class="...ArrayList"> 
    <member class="...MyClass" value="A"/> 
    <member ... /> 
    .... 
</bean> 

更新1

事情是有可能寫出下列方式:

<bean id="sequence" class="...ArrayList"> 
    <constructor-arg> 
    <list> 
     <bean class="...MyClass" constructor-arg="A"/> 
     <bean class="...MyClass" constructor-arg="B"/> 
     <bean class="...MyClass" constructor-arg="C"/> 
    </list> 
    </constructor-arg> 
</bean> 
+0

我認爲你會發現這個有用的:http://stackoverflow.com/questions/2416056/how-to-define-a-list-bean-in-spring – user1885297

回答

2

你可以這樣做:

<bean id="myClassA" class="org.foo.MyClass"> 
    <constructor-arg> 
    <bean class="java.lang.String"> 
     <constructor-arg value="A"/> 
    </bean> 
    <constructor-arg> 
</bean> 

<bean id="sequence" class="java.util.ArrayList"> 
    <constructor-arg> 
     <list> 
      <ref bean="myClassA" /> 
      ... 
     </list> 
    </constructor-arg> 
</bean> 

但是請注意,這是最常見的方法是直接注列表爲豆,而不是第一清單內包裝清單。

+0

是否有可能比全豆更容易引用元素句法? – Dims

+0

是的,bean引用方法允許更容易添加新的bean。查看更新。 – Reimeus

2

是。你甚至可以創建它作爲一個獨立的bean。兩個例子見this thread

3

你應該看看春季國際奧委會文件中的Collections部分。

<bean id="moreComplexObject" class="example.ComplexObject"> 
    <property name="someList"> 
    <list> 
     <value>a list element followed by a reference</value> 
     <ref bean="myDataSource" /> 
    </list> 
    </property>  
</bean> 
相關問題