다수의 데이터를 쉽고 효과적으로 처리할 수 있는 Framework 을 사용하여 데이터를 주입한다.
package com.gdu.app01.xml06;
import java.util.List;
import java.util.Map;
import java.util.Set;
// Collection Framework(List, Set, Map)에 주입
public class Person {
// field
private List<String> hobbies;
private Set<String> contacts;
private Map<String, String> friends;
// Getter + Setter
public List<String> getHobbies() {
return hobbies;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public Set<String> getContacts() {
return contacts;
}
public void setContacts(Set<String> contacts) {
this.contacts = contacts;
}
public Map<String, String> getFriends() {
return friends;
}
public void setFriends(Map<String, String> friends) {
this.friends = friends;
}
// info() 메소드
// 각 List, Set, Map에 값을 넣기 위한 메소드를 만들어 준다.
public void info() {
// List
for(int i = 0; i <hobbies.size(); i++) {
System.out.println((i + 1) + "번째 취미 : " + hobbies.get(i));
}
// Set (인덱스 X)
for(String contact : contacts) {
System.out.println(contact);
}
// Map (Key + Value == Entry)
for(Map.Entry<String, String> entry : friends.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
<property>
는 setter
를 이용해서 주입(Injection)한다.
만약에 setter
가 없으면 오류 발생한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="human" class="com.gdu.app01.xml06.Person">
<!-- List : <list> 태그 사용 -->
<property name="hobbies">
<list>
<value>여행</value>
<value>운동</value>
</list>
</property>
<!-- Set : <set> 태그 사용 -->
<property name="contacts">
<set>
<value>010-1111-1111</value>
<value>010-1111-1111</value>
<value>010-1111-1111</value>
<value>02-123-4567</value>
</set>
</property>
<!-- Map : <map> 태그와 <entry> 태그를 사용하며, key와 value값을 속성으로 준다. -->
<property name="friends">
<map>
<entry key="동네친구" value="뽀로로"></entry>
<entry key="학교친구" value="최자두"></entry>
<entry key="회사친구" value="브레드"></entry>
</map>
</property>
</bean>
</beans>
XML을 이용한 스프링 설정 파일에서는 Container가 생성할 객체를 지정하기 위해서
<bean>
태그를 사용한다.
package com.gdu.app01.xml06;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class SpringMain {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("xml06/appCtx.xml");
Person p = ctx.getBean("human", Person.class);
p.info();
ctx.close();
}
}
getBean()
메소드에는 bean의id
값을 넣는다.AbstractApplicationContext
컨테이너 종료(close)와 같은 기능을 제공하는 객체이다.
ctx.close();
GenericXmlApplicationContext
클래스는 xml파일에 정의된 설정 정보를 읽어서 객체를 생성하고, 각각의 객체를 연결한 뒤에 내부적으로 보관한다.
결과값