BackEnd/Spring

SpringCollection_국비Day82

Leo.K 2022. 6. 28. 14:37

[ 스프링으로 Collection을 만들어서 주입해보기 ]

생성자 주입 방법을 사용한다면, 기본 생성자와 오버로드 생성자를 그리고 클래스내의 멤버 변수가 하나라도 있다면 게터/세터 메서드는 반드시 생성해야 한다. 세터 주입방법을 이용한다면 게터/세터메서드를 반드시 생성해야 한다. 필자는 세터 주입 방법을 사용하여 ArrayList를 생성해 주입하는 예시를 보여주겠다.

[ ArrayList ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package myutil;
 
import java.util.List;
 
public class MyList {
    List list;//property
 
    public List getList() {
        return list;
    }
 
    public void setList(List list) {
        this.list = list;
    }
}
 
//------------------root_context.xml----------------
<!-- MyList 객체 생성 설정 -->
<!-- MyList myListBean = new MyList();
Mylist클래스의 객체 myListBean을 생성하고, 이 객체로 list에 접근한다.
     myListBean.setList(list);
 -->
<bean id="myListBean" class="myutil.MyList"><!-- class경로의 객체를 생성한다. -->
    <property name="list">
        <!-- List list = new ArrayList() -->
        <list>
            <!-- list.add("사과") -->
            <value>사과</value>
            <value>참외</value>
            <value>수박</value>
            <value>딸기</value>
            <value>포도</value>
        </list>
    </property><!-- Setter를 호출한다. -->
</bean>
 
//------------------출력담당. jsp파일----------------
<%
    WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(application);
    //id가 myListBean인 bean객체를 MyList타입으로 다운캐스팅해서 읽어온다. 
    //읽어온 객체에는 list가 저장되어 있다.
    MyList myListBean = wc.getBean("myListBean", MyList.class);
    
    pageContext.setAttribute("myListBean", myListBean);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr>
    MyList내의 ArrayList출력
<hr>
<ul>
    <!-- for(MyList fruit : list) -->
    <c:forEach var="fruit" items="${myListBean.list }">
        <li>${fruit }</li>        
    </c:forEach>
</ul>
</body>
</html>
cs

 

[ HashSet ]

다음으로는 생성자 주입 방법으로 Set을 만들어보자. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package myutil;
import java.util.Set;
public class MySet {
    //Set set = new HashSet(); -> 중복x, 무순서성
    Set set;
 
    public MySet(Set set) {
        super();
        this.set = set;
    }
 
    public MySet() {
    }
 
    public Set getSet() {
        return set;
    }
 
    public void setSet(Set set) {
        this.set = set;
    }
}
//-------------------root_context.xml---------------
<!-- MySet 객체 생성 설계 -->
<!-- Constructor Injection -->
<!-- MySet mySetBean = new MySet(set); -->
<bean id="mySetBean" class="myutil.MySet">
    <constructor-arg>
        <!-- Set set = new HashSet() -->
        <set>
            <!-- set.add("서울") -->
            <value>서울</value>
            <value>경기</value>
            <value>인천</value>
            <value>대전</value>
            <value>대구</value>
            <value>광주</value>
        </set>
    </constructor-arg>
</bean>
//-------------------출력jsp---------------
<%
    WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(application);
    
    MySet mySetBean = wc.getBean("mySetBean", MySet.class);
    
    pageContext.setAttribute("mySetBean", mySetBean);
 
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr>
    MySet내의 HashSet출력
<hr>
<ul>
    <c:forEach var="local" items="${mySetBean.set }">
        <li>${local }</li>
    </c:forEach>
</ul>
 
</body>
</html>
cs

 

[ HashMap ]

세 번째로 map 컬렉션을 만들어보자. 이번에는 다시 Setter Injection을 사용했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package myutil;
import java.util.Map;
public class MyMap {
    Map map;
 
    public Map getMap() {
        return map;
    }
 
    public void setMap(Map map) {
        this.map = map;
    }
}
//------------------root_context.xml-----------------
<!-- MyMap 객체 생성 설계 -->
<!-- Setter Injection -->
<!-- MyMap myMapBean = new HashMap(map) -->
<bean id="myMapBean" class="myutil.MyMap">
    <property name="map">
        <!-- Map map = new HashMap() -->
        <map>
            <!-- map.put("화재신고", "119") -->
            <entry key="화재신고" value="119"></entry>
            <entry key="범죄신고" value="112"></entry>
            <entry key="간첩신고" value="113"></entry>
            <entry key="마약신고" value="1301"></entry>
        </map>
    </property>
</bean>
//------------------출력.jsp-----------------
<%
    WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(application);
    
    MyMap myMapBean = wc.getBean("myMapBean", MyMap.class);
    
    pageContext.setAttribute("myMapBean", myMapBean);
 
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr>
    MyMap내의 HashMap출력
<hr>
<ul>
    <c:forEach var="tel" items="${myMapBean.map }">
        <li>${tel.key }는 ${tel.value }로 전화주세요.</li>
    </c:forEach>
</ul>
 
</body>
</html>
cs

 

[ Properties ]

마지막으로 map컬렉션에 가까운 사촌관계인 Properties를 보자. map과 구조가 매우 유사하기 때문에, 조금 다른 bean객체를 설계하는 코드만 보자. 나머지는 모두 같다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- MyProp 객체 생성 설계 -->
<!-- Setter Injection -->
<!-- MyProp myPropBean = new Properties(prop) -->
<bean id="myPropBean" class="myutil.MyProp">
    <property name="prop">
        <!-- Properties prop = new Properties() -->
        <props>
            <prop key="driver">oracle.jdbc.driver.OracleDriver</prop>
            <prop key="url">jdbc:oracle:thin:@localhost:1521:xe</prop>
            <prop key="username">scott</prop>
            <prop key="password">tiger</prop>
        </props>
    </property>
</bean>
cs

 

'BackEnd > Spring' 카테고리의 다른 글

SpringMVC_DB_국비Day84  (0) 2022.06.30
SpringMVC_Parameter_국비_Day83  (0) 2022.06.29
Spring학습_Day4_AOP  (0) 2022.06.28
Spring_국비Day81  (0) 2022.06.27
Spring 학습_Day3_IoC_DI  (0) 2022.06.20