# 프레임워크 : 특정한 목적에 맞게 프로그래밍을 쉽게 하기 위한 약속

# 스프링 : 자바언어를 기반으로 다양한 어플리케이션을 제작하기 위한 약속된 프로그래밍 틀

# DI (Dependency Injection) : 혼자서 작업을 하지 못하고 작업을 진행할때 다른 객체를 의존하기때문에 호출하여 진행하는 객체
 * 이때 다른 객체들을 어떻게 생성하며 어떻게 사용하나?
 1) A{ new B(); ... }
 2) 누군가가 이미 생성한 객체를 사용 A{ setter나 contruct(생성자) 사용 } : spring의 방법
  이 생성된 객체들을 담고있는 IOC컨테이너!

# IOC (Inversion Of Control)

# spring 기본 예제

 Calculator.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.javalec.ex;
 
public class Calculator {
    public void addition(int f, int s) {
        System.out.println("add");
        System.out.print(f + " + " + s + " = ");
        System.out.println(f+s);
    }
    
    public void subtract(int f, int s) {
        System.out.println("substract");
        System.out.print(f + " - " + s + " = ");
        System.out.println(f-s);    
    }
    public void multiplication(int f, int s) {
        System.out.println("mult");
        System.out.print(f + " * " + s + " = ");
        System.out.println(f*s);
    }
    public void division(int f, int s) {
        System.out.println("div");
        System.out.print(f + " / " + s + " = ");
        System.out.println(f/s);
    }
}
cs

 

MainClass.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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) {
        String configLoc = "classpath:applicationCTX.xml";
        AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc);
        MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class);
        
        myCalculator.add();
        myCalculator.sub();
        myCalculator.mult();
        myCalculator.div();
        
    }
}
cs

 

 

MyCalculator.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.javalec.ex;
 
public class MyCalculator {
    private Calculator calculator;
    private int firstNum;
    private int secondNum;
    
    public void setFirstNum(int firstNum) {
        this.firstNum = firstNum;
    }
    public void setSecondNum(int secondNum) {
        this.secondNum = secondNum;
    }
    public void setCalculator(Calculator calculator) {
        this.calculator = calculator;
    }
    
    public void add() {
        calculator.addition(firstNum, secondNum);
    }
    public void sub() {
        calculator.subtract(firstNum, secondNum);    
    }
    public void mult() {
        calculator.multiplication(firstNum, secondNum);
    }
    public void div() {
        calculator.division(firstNum, secondNum);
    }
}
 
cs

applicationCTX.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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"/>
    
    <bean id ="myCalculator" class="com.javalec.ex.MyCalculator">
        <property name="calculator"> 
            <ref bean="calculator"/>
        </property>
        <property name="firstNum" value="10"/>
        <property name="secondNum" value="2"/>
    </bean>
</beans>
 
cs


 

 

+ Recent posts