Skip to content

Latest commit

 

History

History
125 lines (90 loc) · 3.27 KB

1강_스프링개요.md

File metadata and controls

125 lines (90 loc) · 3.27 KB

1강 스프링 개요

1-1 스프링 프레임워크

  • 스프링은 자바기반 프레임워크
  • JSP 선행 필요

주요기능

  • DI : Defendency Injection
    • 구성요소간의 의존 관계가 외부의 설정파일을 통해 정의되는 방식
    • 코드 재사용성 증대
  • AOP : 관점 지향 프로그래밍
    • 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다.
    • AspectJ를 포함하여 사용할 수 있고, 스프링에서 지원하는 실행에 조합하는 방식도 지원한다.
  • MVC : 모델 뷰 컨트롤
  • JDBC : Java Data Base Connetor

1-2 스프링 프레임워크 모듈

  • spring-code : 스프링의 핵심인 DI와 IoC 제공
  • spring-aop
  • spring-jdbc : DB를 적은 코드로 다룰수 있는 기능 제공
  • spring-tc : 트랜잭션 관련 기능
  • spring-webmvc
  • 해당 모듈들을 사용하려면, 모듈에 대한 의존설정을 개발 프로젝트 XML에 개발자가 직접 한다 => 라이브러리를 임포트할 필요가 없다?

1-3 스프링 컨테이너(IoC)

Inversion of Control

외부 라이브러리 코드가 개발자의 코드를 호출하게 된다. 제어권이 프레임 워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출한다.

  • Java는 OOP, Java로 만들어진 스프링

  • 컨테이너 : 객체(Bean)를 생성 조립

  • Bean : 컨테이너를 통해 생성된 객체, Object

  1. XML 문서 : 객체생성 및 속성 데이터 작성

  2. 컨테이너 : 객체(Bean) 생성 및 조립

  3. 개발문서(.java) : 애플리케이션 구현

// lec01 > MainClass.java
package lec01;

import operator.CalAdd;

public class MainClass {
    public static void main(String[] args) {
        MyCalculator calculator; // 타입 레퍼런스
        calculator = new MyCalculator( 1, 2, new CalAdd());// 객체 생성
        calculator.result();				// 객체 인자 CalSub, CalMul, CalDiv
    }
}
// operator > Calculator.java
package operator;

public interface Calculator { //인터페이스
    public int sum(int firstNum, int secondNum);
}
// lec01 > MyCalculator.java
package lec01;

import operator.Calculator;

public class MyCalCulator { // 클래스 
   public int fNum, sNum;
   public Calculator calculator;
   
   //생성자
   public MyCalculator(int fNum, int sNum, Calculator calculator) {
       this.fNum = fNum;
       this.sNum = sNum;
       this.calculator = calculator
   }
   
   public void result() {
       int value = calculator.sum(this.fNum, this.sNum);
       System.out.println("result : " + value);
   }
   
   public Calculator getCalculator() {
       return calculator;
   }
   
   public void setCalculator(Calculator calculator) {
       this.calculator = calculator;
   }
   
   public int getfNum() {
       return fNum;
   }
   public void setfNum(int fNum) {
       this.fNum = fNum;
   }
}
// operator > CalAdd.java
package operator;

public class CalAdd implements Calculator{
    
    @Override
    public int sum(int firstNum, int secondNum){
        return firstNum + SecondNum;
    }
}