Handler
##$ ListHandler
public class ListHandler {
// field
private List<String> list;
//constructor
public ListHandler() {
}
// method
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public void listInfo() {
for (String item : list) {
System.out.println(item);
}
}
}
SetHandle
public class SetHandler {
// field
private Set<String> set;
// constructor
public SetHandler() {
}
// method
public Set<String> getSet() {
return set;
}
public void setSet(Set<String> set) {
this.set = set;
}
public void setInfo() {
// Set 순회 1
// for (String item : set) {
// System.out.println(item);
// }
// Set 순회 2
Iterator<String> itr = set.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
MapHandler
public class MapHandler {
// field
private Map<String, String> map = new HashMap<String, String>();
// constructor
public MapHandler() {
}
//method
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void mapInfo() {
// keySet() : key만 빼서 value를 알아내는 방식
// Set<String> keys = map.keySet();
// for(String key : keys) {
// System.out.println(key + ":" + map.get(key));
// }
// entrySet() : key와 value를 동시에 빼는 방식
Set<String> keys =map.keySet();
for (String key :keys) {
System.out.println(key + ":" + map.get(key));
}
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
Main
Spring을 사용하지 않을때
public class MainClass {
public static void main(String[] args) {
ListHandler listHandler = new ListHandler();
List<String> foods = new ArrayList<String>();
foods.add("떡볶이");
foods.add("김밥");
foods.add("순대");
foods.add("튀김");
foods.add("어묵");
listHandler.setList(foods);
listHandler.listInfo();
System.out.println(listHandler.getList());
SetHandler setHandler = new SetHandler();
Set<String> courses = new HashSet<String>();
courses.add("자바");
courses.add("자바");
courses.add("파이썬");
courses.add("파이썬");
courses.add("스프링");
courses.add("스프링");
setHandler.setSet(courses);
setHandler.setInfo();
MapHandler mapHandler = new MapHandler();
Map<String, String> dict = new HashMap<String, String>();
dict.put("spring", "봄");
dict.put("summer", "여름");
dict.put("fall", "가을");
dict.put("winter", "겨울");
mapHandler.setMap(dict);
mapHandler.mapInfo();
}
메인클래스에서 new생성자를 통해 매개변수를 전달하고 계산내용을 실행한다.
만약 계산 값을 바꾸려면 MainClass의 set부분을 수정해줘야 한다.
app-context.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
** List 계열은 <list>태그와 <value>태그로 처리합니다.
ListHandler listHandler = new ListHandler();
List<String> foods = new ArrayList<String>();
foods.add("떡볶이");
foods.add("김밥");
foods.add("순대");
foods.add("튀김");
foods.add("어묵");
listHandler.setList(foods);
-->
<bean id="listHandler" class="com.koreait.spring.ListHandler">
<property name="list">
<list>
<value>떡볶이</value>
<value>김밥</value>
<value>순대</value>
<value>튀김</value>
<value>어묵</value>
</list>
</property>
</bean>
<!--
** Set 계열은 <set>태그와 <value>태그로 처리합니다.
SetHandler setHandler = new SetHandler();
Set<String> courses = new HashSet<String>();
courses.add("자바");
courses.add("자바");
courses.add("파이썬");
courses.add("파이썬");
courses.add("스프링");
courses.add("스프링");
setHandler.setSet(courses);
-->
<bean id="setHandler" class="com.koreait.spring.SetHandler">
<property name="set">
<set>
<value>자바</value>
<value>자바</value>
<value>파이썬</value>
<value>파이썬</value>
<value>스프링</value>
<value>스프링</value>
</set>
</property>
</bean>
<!--
** Map 계열은 <map>태그와 <entry>태그로 처리합니다.
MapHandler mapHandler = new MapHandler();
Map<String, String> dict = new HashMap<String, String>();
dict.put("spring", "봄");
dict.put("summer", "여름");
dict.put("fall", "가을");
dict.put("winter", "겨울");
mapHandler.setMap(dict);
mapHandler.mapInfo(); -->
<bean id="mapHandler" class="com.koreait.spring.MapHandler">
<property name="map">
<map>
<entry key="spring" value="봄" />
<entry key="summer" value="여름" />
<entry key="fall" value="가을" />
<entry key="winter" value="겨울" />
</map>
</property>
</bean>
</beans>
SpringMainClass
package com.koreait.spring;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class SpringMainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
String resourceLocations = "classpath:appcontext.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(resourceLocations);
ListHandler handler1 = ctx.getBean("listHandler", ListHandler.class);
handler1.listInfo();
SetHandler handler2 = ctx.getBean("setHandler", SetHandler.class);
handler2.setInfo();
MapHandler handler3 = ctx.getBean("mapHandler", MapHandler.class);
handler3.mapInfo();
ctx.close();
}
}
결과화면
자바는 털 끝하나 건드릴 필요없이 xml만 수정하면 되기 때문에 부품을 생성하고 조립하는데 편리하다.spring의 필요성?
당장 길이가 짧은 예제로는 와닿지 않아도 대형 프로젝트나 개인 프로젝트를 할 때
MainClass를 수정하지 않아도 되는 편리함이 좋다고 하니 일단 그렇다고 해두자.