Develop/Spring

Spring이란?

순무엄마동생 2020. 10. 17. 04:49

취업 면접대비 및 개인 프로젝트 공부용입니다! 잘못된 내용이 있으면 댓글로 알려주세용 :)

 

Spring Framework

- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

 

Spring 특징

- 경량 컨테이너로서 자바 객체를 직접 관리

- 제어 역행(IoC)

- 의존성 주입(DI)

- 관점지향 프로그래밍(AOP)

- MVC 패턴

- 배치 프레임워크

 

 

1. 컨테이너

컨테이너(Container)의 사전적 의미는 그릇으로 스프링 컨테이너는 객체를 관리합니다.

 

2. 제어 역행(IoC:Inversion of Control)

자바 기반의 애플리케이션을 개발하면 객체를 생성하고 연결하면서 제어권은 애플리케이션이 있습니다. 스프링의 경우 컨테이너에게 제어권이 넘어가며 컨테이너는 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 모든 객체에 대한 제어권이 바뀌(IoC 컨테이너)게 됩니다.

 

3. 의존성 주입(DI:Dependency Injection)

class Car{
    private Tire tire;

    public Car(){
        this.tire = new Tire();
    }
}

위의 코드 경우, 자동차가 만들어지면 지정된 타이어가 생성됩니다.

내부에 new를 사용하므로써 Tire와 Car 사이의 의존성이 생겼습니다.

 

class Car{
    private Tire tire;

    public Car(Tire tire){
        this.tire = tire;
    }
}

위 코드는 Car를 생성할 때, Tire라는 인스턴스를 외부에서 받아옵니다. 

이를 의존성이 역전됐다고 표현합니다.

 

4. 관계지향 프로그래밍(AOP:Apspect Oriented Programming)

핵심 기능과 공통 기능을 분리하여 사용하는 프로그래밍 기법

 

5. MVC모델

Model : 백그라운드 동작(Service에서 실제 동작 구현되며 Model은 Entity, DTO이 존재)

View : 사용자에게 보여지는 화면

Controller : Model-View 사이에서 통신(요청 사항 전달)