스프링을 사용하지 않은 프로젝트
package com.javalec.ex;
public class MainClass {
public static void main(String[] args) {
MyCalculator myCalculator = new MyCalculator(); //객체를 생성
myCalculator.setCalculator(new Calculator()); 만약 Calculator가 바뀌면 이름을 또 바꾸어야 하기 때문에 좋은 방법은 아님
MyCalculator는 Calculator클래스에 의존됨
myCalculator.setFirstNum(10); //setter를 이용해 값을 설정
myCalculator.setSecondNum(2);
myCalculator.add();
myCalculator.sub();
myCalculator.mul();
myCalculator.div();
}
package com.javalec.ex;
public class MyCalculator { //setter와 getter를 만든 MyCalculator클래스
Calculator calculator; // Calculator.class를 만들었기 때문에 레퍼런스필드객체로 사용이 가능하다.
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) {
this.calculator = calculator;
}
public void setFirstNum(int firstNum) {
this.firstNum = firstNum;
}
public void setSecondNum(int secondNum) {
this.secondNum = secondNum;
}
}
package com.javalec.ex;
public class Calculator { // 가감승제 메소드 탑재
public void addition(int f, int s) {
System.out.println("addition()");
int result = f + s;
System.out.println(f + " + " + s + " = " + result);
}
public void subtraction(int f, int s) {
System.out.println("subtraction()");
int result = f - s;
System.out.println(f + " - " + s + " = " + result);
}
public void multiplication(int f, int s) {
System.out.println("multiplication()");
int result = f * s;
System.out.println(f + " * " + s + " = " + result);
}
public void division(int f, int s) {
System.out.println("division()");
int result = f / s;
System.out.println(f + " / " + s + " = " + result);
}
}
스프링을 사용한 프로젝트
외부에서 객체를 만들어서 주입하는방법(DI)
public class MainClass {
public static void main(String[] args) {
String configLocation = "classpath:applicationCTX.xml"; // xml의 파일을 스트링형식으로 configLocation변수에 저장
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); // xml파일 파싱
MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class); //외부에서 만들어진 applicationCTX.xml에 저장된 beam값을 얻어온다. 필드에 대한 setter가 반드시 필요하다.
myCalculator.add();
myCalculator.sub();
myCalculator.mul();
myCalculator.div();
}
스프링 설정 파일의 이해
applicationCTX.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">
객체하나하나를 xml파일에서 bean이라고 한다.
<bean id="calculator" class="com.javalec.ex.Calculator" /> //객체생성
객체 calculateor id이며 클래스는 com.javalec.ex.Calculator이다.
<bean id="myCalculator" class="com.javalec.ex.MyCalculator"> //객체생성
<property name="calculator">
calculator 필드변수
<ref bean="calculator"/>
</property>
값
<property name="firstNum" value="10" />
firstNum 필드변수
<property name="secondNum" value="2"></property>
</bean>
</beans>
java소스-------------> xml소스 setFirstNum을 set을빼고 proproty name="firstNum"으로 바꾸어준다.
'프로그래밍 > spring' 카테고리의 다른 글
스프링 컨테이너 생명 주기 (472) | 2017.12.07 |
---|---|
5.DI활용(의존 관계, di사용에 따른 장점) (492) | 2017.11.26 |
4.DI(Dependency Injection)-II (1162) | 2017.11.22 |
2.스프링 프로젝트 및 DI ,IDC (1178) | 2017.11.21 |
1.스프링 (1175) | 2017.11.20 |