SPRING January 09, 2021

spring-03 Collection 활용

Words count 9.2k Reading time 8 mins.

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

    }

}

결과화면

spring의 필요성?

자바는 털 끝하나 건드릴 필요없이 xml만 수정하면 되기 때문에 부품을 생성하고 조립하는데 편리하다.

당장 길이가 짧은 예제로는 와닿지 않아도 대형 프로젝트나 개인 프로젝트를 할 때
MainClass를 수정하지 않아도 되는 편리함이 좋다고 하니 일단 그렇다고 해두자.


0%