2장에서 만들었던 계산기 프로그램을 이용하여 메이븐을 이용하여 스프링 모듈을 사용하도록 해본다.
New > Project > Maven > Maven Project 선택 | Create a simple project 체크 | Group Id : spring5 Artifact Id : ch03_pjt_03 입력 |
생성된 ch03_pjt_03 프로젝트의 pom.xml에 스프링과 빌드를 설정한다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring5</groupId>
<artifactId>ch03_pjt_03</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- spring-context 모듈 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
</dependencies>
<!-- 빌드 설정 -->
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
JRE System Library가 JDK11로 되어있는지 확인한다.
(만약 1.5로 설정되어있다면 프로젝트 우클릭 > Maven > Update project 를 수행한다.)
src/main/java에 ch03_pjt_03 패키지를 생성하고 다음처럼 클래스와 인터페이스를 생성한다.
해당 클래스와 인터페이스에 코딩해준다.
package ch03_pjt_03;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
GenericXmlApplicationContext ctx =
new GenericXmlApplicationContext("classpath:applicationContext.xml");
CalAssembler calAssembler = ctx.getBean("calAssembler", CalAssembler.class);
calAssembler.assemble();
ctx.close();
}
}
package ch03_pjt_03;
public interface ICalculator {
public int doOperation(int firstNum, int secondNum);
}
package ch03_pjt_03;
public class MyCalculator {
public void calculate(int fNum, int sNum, ICalculator calculator) {
int value = calculator.doOperation(fNum, sNum);
System.out.println("result : " + value);
}
}
package ch03_pjt_03;
public class CalAssembler {
MyCalculator calculator;
CalAdd calAdd;
CalSub calSub;
CalMul calMul;
CalDiv calDiv;
public CalAssembler(MyCalculator calculator, CalAdd calAdd, CalSub calSub, CalMul calMul, CalDiv calDiv) {
this.calculator = calculator;
this.calAdd = calAdd;
this.calSub = calSub;
this.calMul = calMul;
this.calDiv = calDiv;
}
public void assemble() {
calculator.calculate(10, 5, calAdd);
calculator.calculate(10, 5, calSub);
calculator.calculate(10, 5, calMul);
calculator.calculate(10, 5, calDiv);
}
}
package ch03_pjt_03;
public class CalAdd implements ICalculator{
@Override
public int doOperation(int firstNum, int secondNum) {
return firstNum + secondNum;
}
}
package ch03_pjt_03;
public class CalSub implements ICalculator{
@Override
public int doOperation(int firstNum, int secondNum) {
return firstNum - secondNum;
}
}
package ch03_pjt_03;
public class CalMul implements ICalculator{
@Override
public int doOperation(int firstNum, int secondNum) {
return firstNum * secondNum;
}
}
package ch03_pjt_03;
public class CalDiv implements ICalculator{
@Override
public int doOperation(int firstNum, int secondNum) {
return secondNum != 0 ? (firstNum / secondNum) : 0;
}
}
src/main/resources에 스프링 IoC 컨테이너 역할을 하는 applicationContext.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="cAdd" class="ch03_pjt_03.CalAdd" />
<bean id="cSub" class="ch03_pjt_03.CalSub" />
<bean id="cMul" class="ch03_pjt_03.CalMul" />
<bean id="cDiv" class="ch03_pjt_03.CalDiv" />
<bean id="myCalculator" class="ch03_pjt_03.MyCalculator" />
<bean id="calAssembler" class="ch03_pjt_03.CalAssembler" >
<constructor-arg ref="myCalculator" />
<constructor-arg ref="cAdd" />
<constructor-arg ref="cSub" />
<constructor-arg ref="cMul" />
<constructor-arg ref="cDiv" />
</bean>
</beans>
이제 입력된 코드가 정상적으로 수행되는지 확인해본다.
ch03_pjt_03 프로젝트 우클릭 > Run as > Java Application
'Spring & Springboot > 올인원 스프링 프레임워크' 카테고리의 다른 글
학사 관리 시스템 -1 (0) | 2023.09.13 |
---|---|
프로젝트 생성 시 나타나는 경고 해결방안 (0) | 2023.09.12 |
스프링 프로젝트 생성하기 (0) | 2023.09.12 |
계산기 프로그램 만들기 (0) | 2023.09.11 |
스프링 개발 환경 구축 (0) | 2023.09.11 |