인터넷 강의를 듣고 공부한 내용을 포스팅합니다.
'윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정' 이란 강의를 듣고 있습니다.
컬렉션 주입
bean을 정의할 때 주입해야 하는 값이 컬렉션인 경우 컬렉션이 객체를 초기에 설정할 수 있습니다.
이 포스팅에서는 List,Map,Set,Property를 알아보겠습니다.
실습
방식은 다른 주입과 흡사합니다. 빠르게 보시죠
List
<bean id="t1" class="kr.co.softcampus.beans.TestBean">
<!-- 제네릭이 String List -->
<property name="list1">
<list>
<value>문자열1</value>
<value>문자열2</value>
<value>문자열3</value>
</list>
</property>
<!-- 제네릭이 Integer인 List -->
<property name="list2">
<list>
<value type="int">100</value>
<value type="int">200</value>
<value type="int">300</value>
</list>
</property>
<!-- 제네릭이 Class인 List -->
<property name="list3">
<list>
<bean class="kr.co.softcampus.beans.DataBean"/>
<bean class="kr.co.softcampus.beans.DataBean"/>
<ref bean = "data_bean"/>
<ref bean = "data_bean"/>
</list>
</property>
</bean>
<bean id="data_bean" class="kr.co.softcampus.beans.DataBean" scope="prototype"/>
property태그를 사용하고 그 안에 내가 사용하는 콜렉션 태그를 넣어주고 값을 정의해주면 됩니다.
Set
<bean id="t1" class="kr.co.softcampus.beans.TestBean">
<!-- 제네릭이 String Set -->
<property name="set1">
<set>
<value>문자열1</value>
<value>문자열2</value>
<value>문자열3</value>
<value>문자열3</value>
<value>문자열3</value>
</set>
</property>
<!-- 제네릭이 Integer인 Set -->
<property name="set2">
<set>
<value type="int">100</value>
<value type="int">200</value>
<value type="int">300</value>
<value type="int">300</value>
<value type="int">300</value>
</set>
</property>
<!-- 제네릭이 Class인 Set -->
<property name="set3">
<set>
<bean class="kr.co.softcampus.beans.DataBean"/>
<bean class="kr.co.softcampus.beans.DataBean"/>
<ref bean = "data_bean"/>
<ref bean = "data_bean"/>
</set>
</property>
</bean>
<bean id="data_bean" class="kr.co.softcampus.beans.DataBean" scope="prototype"/>
List와 거의 흡사하지만 한가지 다른 점이 있습니다.
결과
set3 : kr.co.softcampus.beans.DataBean@34cd072c
set3 : kr.co.softcampus.beans.DataBean@7a1ebcd8
set3 : kr.co.softcampus.beans.DataBean@5faeada1
위의 결과는 제네릭이 class인 경우의 결과입니다. bean객체를 직접 생성하여 주입한 위의 두개는 잘 들어갔는데 밑에
밖에다가 따로 bean객체를 생성하고 넣어준 건 하나만 들어갔습니다. set에서는 따로 객체를 생성하길 원한다면 bean객체를 직접 넣어주어야 합니다.
Map
<bean id="t1" class="kr.co.softcampus.beans.TestBean">
<!-- map -->
<property name="map1">
<map>
<entry key="a1" value="문자열"/>
<entry key="a2" value="100" value-type="int"/>
<entry key="a3">
<bean class="kr.co.softcampus.beans.DataBean"/>
</entry>
<entry key="a4" value-ref="data_bean"/>
<entry key="a5">
<list>
<value>문자열1</value>
<value>문자열2</value>
<value>문자열3</value>
</list>
</entry>
</map>
</property>
</bean>
<bean id="data_bean" class="kr.co.softcampus.beans.DataBean" scope="prototype"/>
TestBean에 정의되어져 있는 map은 key는 String이고 value는 object입니다.
entry태그 안에 key와 value모두 정의해 줍니다.
property
이 강의 들으면서 처음 알았습니다..
Map과 비슷하게 동작을 한다고 합니다.
<bean id="t1" class="kr.co.softcampus.beans.TestBean">
<!-- property -->
<property name="prop1">
<props>
<prop key="p1">문자열1</prop>
<prop key="p2">문자열2</prop>
<prop key="p3">문자열3</prop>
</props>
</property>
</bean>
끝!
'Spring' 카테고리의 다른 글
DI(Dependency Injection) 자동주입 (0) | 2021.07.18 |
---|---|
DI(Dependency Injection) Setter메서드를 통한 주입 (0) | 2021.07.17 |
DI(Dependency Injection) 생성자를 통한 주입 (0) | 2021.07.17 |
빈 객체의 생명주기, BeanPostProcessor (0) | 2021.07.16 |
빈 객체 생성하기 (0) | 2021.07.15 |