Spring & Springboot/올인원 스프링 프레임워크

스프링을 이용한 계산기 프로그램

YJ_ma 2023. 9. 12. 02:34

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

실행 결과