2012-12-23 2 views
1

String으로 인스턴스화하거나 클래스 내에 미리 정의 된 정적 인스턴스를 가질 수있는 클래스 MyClass이 있다고 가정합니다. 이 같은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) { 
     ... 
    } 
} 

은 어떻게 든 봄 설정에 ArrayList<MyClass> 빈을 만들 수 있습니까?

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

UPDATE 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

예, 빈 참조 방식을 사용하면 새 빈을 더 쉽게 추가 할 수 있습니다. 업데이트를 참조하십시오. – Reimeus

2

예. 심지어 독립형 bean으로 작성할 수도 있습니다. 두 가지 예는 this thread을 참조하십시오.

3

스프링 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> 
관련 문제