Spring_Collection Framework (List, Set, Map)

JW__1.7·2022년 10월 27일
0

Spring 공부일지

목록 보기
7/9

Collection Framework

다수의 데이터를 쉽고 효과적으로 처리할 수 있는 Framework 을 사용하여 데이터를 주입한다.

XML Bean Property에 Collection Framework (List, Set, Map) 주입하기

Person Class _ 값을 저장하는 저장소

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());
		}
	}
	
}

Spring Bean Configuration File : appCtx.xml _ 값을 지정

<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> 태그를 사용한다.

SpringMain Class

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파일에 정의된 설정 정보를 읽어서 객체를 생성하고, 각각의 객체를 연결한 뒤에 내부적으로 보관한다.

결과값

0개의 댓글