프로그래밍 공부/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를 만들지 정해주어야 한다.