프로그래밍 공부/Spring

[Spring] 콜렉션 생성과 DI

valid_ming 2021. 4. 30. 10:39

 

뉴렉처 강사님의 동영상 강의를 정리한 글입니다.

 

 

ArrayList를 xml을 통해 생성하고 DI 해봅니다.

 

 

1. xml을 통해 ArrayList만 생성하고 요소는 코드에서 넣기

 

setting.xml

<bean id="exams" class="java.util.ArrayList"></bean>

 

Program.java

List<Exam> exams = (List<Exam>) context.getBean("exams");
exams.add(new NewlecExam(1,1,1,1));

for(Exam e: exams) System.out.println(e);

 

 

2. ArrayList 생성자를 이용하여 xml 파일에서 요소까지 넣기

list Collection을 추가한 생성자를 통해 ArrayList 생성 

 

 

setting.xml

<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" p:math="10" p:com="10"/>

<bean id="exams" class="java.util.ArrayList">
  <constructor-arg>
    <list>
      <bean class="spring.di.entity.NewlecExam" p:kor="1" p:eng="1" p:math="1" p:com="1"/>
      <ref bean ="exam"></ref>
    </list>
  </constructor-arg>
</bean>

1) constructor-arg 태그를 이용

2) list 태그를 이용하여 Collection형으로 넣어줌

3) bean 태그를 이용하여 넣어줄 요소 생성

4) 이전에 만든 객체 넣어줄 때는 ref 태그 이용 

 

 

 

3. util:list 이용: list 컬렉션을 개별적으로 만들기

 

먼저 Namespaces에서 util을 체크해준다.

 

setting.xml

<util:list id="exams" list-class="java.util.ArrayList">
  <bean class="spring.di.entity.NewlecExam" p:kor="1" p:eng="1" p:math="1" p:com="1"/>
  <ref bean ="exam"></ref>
</util:list>

이때, util:list는 list와 다르다.

list는 실제 객체를 생성해주는 것이 아니고 list를 setting 할 때 사용하는 태그이고,

util:list는 실제 객체를 만든다.  따라서 id 값을 지정해주어야 한다.

또한 list-class 필드를 이용하여 어떤 class를 사용하여 list를 만들지 정해주어야 한다.