[Spring]콜렉션 생성과 DI
Spring
toString
(자바와 같은) 객체지향 언어들은 객체에 toString이라는 메소드를 기본적으로 제공한다.
일반적으로 toString은 그 객체를 설명해주는 문자열을 리턴한다.
그리고 객체의 toString을 덮어쓰기(overriding)하면 다른 형식의 문자열을 리턴할 수 있다.
문자열이 기대되는 곳에서 문자열이 아닌 객체를 사용하면 시스템은 암시적으로 toString을 호출한다.
⭐순수 java 콜렉션 생성
public class Program {
public static void main(String[] args) {
List<Exam> exams = new ArrayList<>();
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]
⭐Spring을 이용한 콜렉션 생성과 DI
✨생성자를 이용한 콜렉션 생성
(setting.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" />
<bean id="exams" class="java.util.ArrayList">
<constructor-arg>
<list>
<bean class="spring.di.entity.NewlecExam" p:kor="20" />
<ref bean="exam"/>
</list>
</constructor-arg>
</bean>
</beans>
<bean>
를 이용해 exams라는 콜렉션을 생성한다.
콜렉션에 값을 추가하는 add()
연산은 <property>
로 할 수 없다.
따라서 생성자에 값을 setting 해주는 방식으로 di를 해야한다.
<list>
태그 안에 di하고자 하는 객체를 넣을 수 있다.
이때 <bean>
을 이용하여 직접 생성할 수 도 있고, <ref>
를 이용하여 위에서 만들었던 객체를 가져올 수 도 있다.
(Program.java)
public class Program {
public static void main(String[] args) {
ApplicationContext context
= new ClassPathXmlApplicationContext("spring/di/setting.xml");
List<Exam> exams = (List<Exam>) context.getBean("exams");
for(Exam e : exams)
System.out.println(e);
}
}
실행결과
NewlecExam [kor=1, eng=1, math=0, com=0]
NewlecExam [kor=10, eng=0, math=0, com=0]
✨ util을 이용한 콜렉션 생성
(setting.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" />
<util:list id="exams" list-class="java.util.ArrayList">
<bean class="spring.di.entity.NewlecExam" p:kor="1" p:eng="1" />
<ref bean="exam"/>
</util:list>
</beans>
namespace에서 util을 선택하여 추가
<list>
태그 앞에 util을 추가하여 <util:list>
로 바꾸면 처리기가 util로 바뀌며 직접 객체를 만드는 역할을 할 수 있다.
(<list>
는 목록을 셋팅하는데 사용하는 태그이며, 직접 객체를 만들지는 못함)
그리고 list-class를 이용하여 사용할 list를 구체화 시켜야 한다.
댓글남기기