假设我有一个类MyClass
,它可以用String
实例化,或者在类中有预定义的静态实例。
这样的事情:
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?像
<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 :(得分:3)
您应该查看Spring IOC文档中的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>
答案 1 :(得分:2)
是。您甚至可以将其创建为独立bean。有两个例子,请参阅this thread。
答案 2 :(得分: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>
但请注意,最常见的方法是将列表直接注入bean,而不是先将列表包装在列表中。