MainClass.java

package com.javalec.ex;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		
//		Calculation calculation = new Calculation();
//		calculation.setFirstNum(10);
//		calculation.setSecondNum(2);
//		
		
		String configLocation = "classpath:NewFile.xml";
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
		MyCalculator myCalculator=ctx.getBean("myCalculator",MyCalculator.class);
		
		myCalculator.add();
		myCalculator.sub();
		myCalculator.mul();
		myCalculator.div();
	}

}

Spring 이 아닌! 방식은 MainClass 에서 Calcuation 인스턴스로 Calculation 객체를 생성하고 필요한 메소드를 호출하는 방식 이였다면 (현재 주석처리)

Sptring 방식은

외부의 파일을 이용해서 필요한 객체를 얻어오고, 메소드를 부르는 것입니다.

외부 파일은 .xml 로

resources 에

Spring Bean Configuration File 을 선택하면 되는데, 작성자는 에러가 발생해서

왜 JRE 버전을 걸고 넘어지는지 모르겠다.

해서 대안으로

그냥 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 http://www.springframework.org/schema/beans/spring-beans.xsd">


</beans>

Bean Configuration File 소스를 그대로 복사 붙여넣기 하니 잘된다!

여튼

application.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 http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id = "calculator"  class="com.javalec.ex.Calculator"/>
//Calculator 의 객체 calculator 를 만들어줬다
<bean id="myCalculator" class="com.javalec.ex.MyCalculator">
//MyCalculator 객체 myCalculator 를 만들었다
	<property name="calculator">	//멤버변수로 calculator 를 뒀다
		<ref bean = "calculator"/> // 참조형 변수로 얘를 둬서 자료형이 Calculator 이다
	</property>
	<property name="firstNum" value="10"/>//멤버변수 firstNum 이고 값이 10
	<property name="secondNum" value="2"/>//멤버변수 secondNum 이고 값이 2

</bean>
</beans>

application.xml 이 필요한 객체들을 생성한다

MyCalculator.java

package com.javalec.ex;

public class MyCalculator {
	public Calculator calculator;
	private int firstNum;
	private int secondNum;
	
	public MyCalculator() {
		
	}
	public void add() {
		calculator.addition(firstNum,secondNum);
	}
	public void sub() {
		calculator.subtraction(firstNum,secondNum);
	}
	public void mul() {
		calculator.multiplication(firstNum,secondNum);
	}
	public void div() {
		calculator.division(firstNum,secondNum);
	}
	
	public void setCalculator(Calculator calculator) { //받아온 calculator 주소를 멤버변수에 두다
		this.calculator = calculator;
	}
	
	public void setFirstNum(int firstNum) { //받아온 값을 멤버변수에
		this.firstNum = firstNum;
	}
	
	public void setSecondNum(int secondNum) {//받아온 값을 멤버변수에
		this.secondNum = secondNum;
	}

		
}
Calculator.java

package com.javalec.ex;

public class Calculator {
	public void addition(int f, int s) {
		int result = f + s;
		System.out.println(f + " + " + s + "=" + result);
		
	}
	public void subtraction(int f, int s) {
		int result = f-s;
		System.out.println(f + " - " + s + " = " + result);
	}
	public void multiplication(int f, int s) {
		int result = f * s;
		System.out.println(f + " * " + s + " = " + result);
	}
	public void division(int f, int s) {
		int result = f/s;
		System.out.println(f + " / " + s + " = " + result);
	}

}

Mycalculator 에서 calculator 주소를 가졌기때문에 그곳에서 메소드를 호출하면 여기로 오다.

그림으로 나타내자면 이렇다,

profile
건물주가 되는 그날까지

0개의 댓글