최신글
hyeonga_code
Spring_다형성을 이용한 코드 작성 본문
반응형
- 다형성을 이용
- src > main > webapp > WEB-INF > web.xml 파일에서 내용을 삭제합니다.
- 삭제하고 남은 내용
=====
1
2
3
4
5
6
|
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> </web-app>
|
- src > pom.xml 파일
=====
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<modelVersion>4.0.0</modelVersion>
<groupId>basic.spring</groupId>
<artifactId>myWeb</artifactId>
<name>myboard</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<!-- 자바 버전을 변경합니다. -->
<java-version>11</java-version>
<!-- 스프링 프레임워크 버전을 변경합니다. 원래 3.1.1 현재 5.3.27-->
<org.springframework-version>5.3.27</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>2.0.7</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- 변경 하기 -->
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<!-- 변경 하기 : 원래 jsp-api 현재 javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 변경 하기 4.12 버전 이상-->
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<!-- 2.10 버전이 있으나 아무도 사용하지 않으므로 결함이 있다는 의미입니다. 그대로 사용합니다. -->
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- 기본 2.5.1입니다. 현재 3.10.1 으로 변경합니다. -->
<version>3.10.1</version>
<configuration>
<!-- Java 버전이므로 11로 변경해야 합니다. -->
<source>11</source>
<target>11</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<!-- 실행 파일입니다. 기본 1.2.1 현재 3.1.0 으로 변경합니다.-->
<version>3.1.0</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
|
- sts.spring.ioc > 'TV.java' 인터페이스를 생성합니다.
=====
1
2
3
4
5
6
7
8
9
|
package sts.spring.ioc;
public interface TV {
public void powerOn();
public void powerOff();
public void volumeUp();
public void volumeDown();
}
|
cs |
- 두 개의 하위 클래스를 생성하여 비교합니다.
- sts.spring.ioc > 'SamsungTV.java' 클래스를 생성합니다.
=====
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
|
package sts.spring.ioc;
public class SamsungTV implements TV {
public SamsungTV() {
System.out.println("[ Create SamsungTV ]");
}
@Override
public void powerOn() {
System.out.println("SamsungTV powerOn");
}
@Override
public void powerOff() {
System.out.println("SamsungTV powerOff");
}
@Override
public void volumeUp() {
System.out.println("SamsungTV volumeUp");
}
@Override
public void volumeDown() {
System.out.println("SamsungTV volumeDown");
}
}
|
- sts.spring.ioc > 'LgTV.java' 클래스를 생성합니다.
=====
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
|
package sts.spring.ioc;
public class LgTV implements TV{
@Override
public void powerOn() {
System.out.println("LgTV powerOn");
}
@Override
public void powerOff() {
System.out.println("LgTV powerOff");
}
@Override
public void volumeUp() {
System.out.println("LgTV volumeUp");
}
@Override
public void volumeDown() {
System.out.println("LgTV volumeDown");
}
}
|
- sts.spring.ioc > 'TVUser.java' 클래스를 생성합니다.
=====
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
|
package sts.spring.ioc;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVUser {
public static void main(String[] args) {
// Spring 컨테이너를 구동합니다.
AbstractApplicationContext fac = new GenericXmlApplicationContext("applicationContext.xml");
// Spring 컨테이너에 등록한 객체를 요청합니다.
TV samsungTV = (TV) fac.getBean("samsungTV");
samsungTV.powerOn();
samsungTV.volumeUp();
samsungTV.volumeDown();
samsungTV.powerOff();
System.out.println();
TV lgTV = (TV) fac.getBean("lgTV");
lgTV.powerOn();
lgTV.volumeUp();
lgTV.volumeDown();
lgTV.powerOff();
// Spring 컨테이너를 종료합니다.
fac.close();
/*
SamsungTV powerOn
SamsungTV volumeUp
SamsungTV volumeDown
SamsungTV powerOff
LgTV powerOn
LgTV volumeUp
LgTV volumeDown
LgTV powerOff
*/
}
}
|
반응형
'Spring' 카테고리의 다른 글
Spring_Spring DI_Dependency Injection_XML 설정_컨테이너, init-method, destroy-method, lazy-init 메소드 (보충하기) (0) | 2023.12.15 |
---|---|
Spring_MVC 프로젝트 기본 시작 (0) | 2023.12.15 |
Spring_Spring DI_Dependency Injection_XML 설정_Spring IoC (0) | 2023.12.14 |
Spring_스프링 프레임워크 비교_디자인 패턴을 이용한 방식 (0) | 2023.12.14 |
Spring_스프링 프레임워크 비교_다형성을 이용한 방식 (0) | 2023.12.14 |