티스토리 뷰

BACK-END/SPRING

[SPRING] BASIC THINGS

진심스테이크 2018. 5. 8. 10:04

Spring : 다양한 어플리케이션을 제작하기 위한 약속된 프로그래밍 틀

- JAVA 기반

- 코드의 경량화

- 개발 중 테스트가 쉬움

- 톰캣 사용 가능

- 국내 표준 프레임워크

- 다양한 어플리케이션을 쉽고 빨리 개발 가능

- 부품을 생성하고 조립하는 라이브러리 집합체

- 동적 웹사이트 개발

- 관점 지향

- 확장성

 

 

DI (Dependency Injection)

- 객체를 직접 생성 하는것이 아니라 외부에서 만들어서 setter( ) 또는 construct( )에 대입

 

 

IOC 컨테이너

- 인스턴스의 생명주기 관리

- 추가적인 기능들 제공

- 코드의 처리과정을 갖는 독립적인 주체 : 알아서 컨트롤 가능

- 외부에서 제어

 

 

 

 

 


 

 

예시

 

- Calculation.java

package com.java.ex;

public class Calculation {

    public void add(int i, int j) {
        System.out.println("add");
        System.out.println(i + "+" + j + "=" + (i + j));
    }

    public void sub(int i, int j) {
        System.out.println("sub");
        System.out.println(i + "-" + j + "=" + (i - j));
    }

    public void multi(int i, int j) {
        System.out.println("multi");
        System.out.println(i + "*" + j + "=" + (i * j));
    }

    public void div(int i, int j) {
        System.out.println("div");
        System.out.println(i + "/" + j + "=" + (i / j));
    }
}

 

 

- MyCalculation.java

package com.java.ex;

public class MyCalculation {

    Calculation cal;
    private int num1;
    private int num2;

    public MyCalculation() {

    }

    public int getNum1() {
        return num1;
    }

    public void setNum1(int num1) {
        this.num1 = num1;
    }

    public int getNum2() {
        return num2;
    }

    public void setNum2(int num2) {
        this.num2 = num2;
    }

    public void add() {
        cal.add(num1, num2);
    }

    public void sub() {
        cal.sub(num1, num2);
    }

    public void mul() {
        cal.multi(num1, num2);
    }

    public void div() {
        cal.div(num1, num2);
    }

    public void setCal(Calculation cal) {
        this.cal = cal;
    }
}

 

 

Spring 적용 전

 

- Main.java

package com.java.ex;

public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        // 스프링 적용 안함
        MyCalculation mc = new MyCalculation();
        mc.setCal(new Calculation());

        mc.setNum1(10);
        mc.setNum2(4);

        mc.add();
        mc.sub();
        mc.mul();
        mc.div();
    }
}

 

 

Spring 적용 후

 

- 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="Calculation" class="com.java.ex.Calculation" />
    <bean id="myCalculation" class="com.java.ex.MyCalculation">
        <!-- 필드 설정 -->
        <property name="cal">
            <ref bean=" calculation " />
        </property>
        <property name="num1" value="10"></property>
        <property name="num2" value="4"></property>
    </bean>

 

 

- Main.java

package com.java.ex;

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

public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        // 스프링 적용
        String location = "classpath:application.xml";
        AbstractApplicationContext ctx = new GenericXmlApplicationContext(location);
        MyCalculation mcz = ctx.getBean("myCalculation", MyCalculation.class);
    
        mcz.add();
        mcz.sub();
        mcz.mul();
        mcz.div();
    }
}

 

 

 

'BACK-END > SPRING' 카테고리의 다른 글

[SPRING] MVC 게시판  (0) 2019.09.25
[SPRING] MYBATIS MYSQL 연동  (0) 2019.09.25
[SPRING] IoC - SPRING CONTAINER  (0) 2019.09.25
[SPRING] AOP - 관점 지향 프로그래밍  (0) 2018.05.17
[SPRING] FRAMEWORK  (0) 2018.05.15
댓글