[ 스프링으로 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 |