오늘은 아래의 코드를 xml로 설정해보자
List<Exam> exams = new ArrayList<>();
exams.add(new NewlecExam(1,1,1,1));
위의 두 번째 코드인 exams.add는 setter가 아니기 때문에 XML 설정에서 property 속성을 사용할 수 없다. 그래서 아래의 2가지 방법으로 컬렉션을 주입시킨다.
- 생성자 DI 사용
- util 네임스페이스 사용
생성자 DI 사용
- Java 에서 제공하는 컬렉션 (ArrayList 등) 객체를 DI
- 생성자 DI 원리를 이용
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" p:com="10" p:math="10"/>
<bean id="exams" class="java.util.ArrayList">
<constructor-arg> // ArrayList 는 컬렉션을 매개변수로 받는 생성자가 존재
<list> // ArrayList 의 요소 생성 및 삽입
<bean class="spring.di.entity.NewlecExam" p:kor="1" p:eng="1" p:com="1" p:math="1"/>
<ref bean="exam"/> // 위에 존재하는 exam bean 객체 삽입
</list>
</constructor-arg>
</bean>
List<Exam> exams = (List<Exam>)context.getBean("exams");
//exams.add(new NewlecExam(1,1,1,1));
for(Exam e : exams) {
System.out.println(e);
}
//출력
//NewlecExam [kor=1, eng=1, math=1, com=1]
//NewlecExam [kor=10, eng=10, math=10, com=10]
util 네임스페이스 사용
- util 네임스페이스와 스키마 위치 추가
<util:list id="exams" list-class="java.util.ArrayList">
<bean class = "spring.di.entity.NewlecExam" p:kor="10" p:eng="10"/>
<ref bean="exam"/>
</util:list>
List<Exam> exams = (List<Exam>)context.getBean("exams");
//exams.add(new NewlecExam(10,10));
for(Exam e : exams) {
System.out.println(e);
}
//출력
//NewlecExam [kor=10, eng=10, math=0, com=0]
//NewlecExam [kor=10, eng=10, math=10, com=10]
참고자료
'🖥️ Backend > Spring' 카테고리의 다른 글
[Spring] 13.@Component (0) | 2024.12.30 |
---|---|
[Spring] 12.@Autowired (0) | 2024.12.30 |
[Spring] 10.Constructor DI(value타입) (0) | 2024.12.27 |
[Spring] 9.Setter DI(value타입) (1) | 2024.11.08 |
[Spring] 8.스프링 IoC 컨테이너 사용하기(ApplicationContext 이용하기) (1) | 2024.11.06 |