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 주소를 가졌기때문에 그곳에서 메소드를 호출하면 여기로 오다.
그림으로 나타내자면 이렇다,