ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SpringBoot - Step 4] 스프링 프레임워크 & DispatcherServlet
    Java/SpringBoot 2.0 2019. 1. 13. 01:04

    스프링이란? 엔터프라이즈 애플리케이션을 개발하기에 적합한 프레임워크로 객체 관리를 해주는 빈 컨테이너 프레임워크이다.


    스프링 프레임워크 탄생?

    최초 EJB(Enterprise Java Bean)이였는데 경량화되고 간소한 컨테이너를 선호하게 되어
    POJO(Plain Old Java Object)가 만들어 졌다.
    그후 “웹 애플리케이션 컨테이너와 상관없이 독립적으로 빈의 생명주기를 관리할 수 있는 스프링 프레임워크가 만들어 졌다”


    IOC 패턴

    IoC(Inversion of Control) = 컨테이너 :  제어의 역전
    프로그램의 생명주기에 대한 주도권이 웹 애플리케이션 컨테이너에게 있다. 즉 객체의 생성 부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 뜻

    IoC특징 두가지

    - 하이레벨 모듈은 로우레벨 모듈을 의존할 수 없고, 모두 인터페이스에 의존해야 한다.

    - 추상화는 세부 사항에 의존해서는 안된다.


    DI(Dependency Injection)

    각 클래스 사이의 의존관계를 빈설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말한다.
    인터페이스를 이용해서 결합도를 낮추려해도 결국 객체를 생성하기위한 코드/작업이 필요하며 이 행위를 DI가 대신 해결해 주는것이다.
    Setter Injection, Constructor Injection, Method Injection이 있다.

    DL(Dependency Lookup)

    저장소에 저장되어 있는 빈에 접근하기 위하여 개발자들이 컨테이너에서 제공하는 API을 이용해 빈을 Lookup하는것.




    스프링 MVC 구조

    DispatcherServlet, View Resolver, Interceptor Handler, View등으로 구성된다.


    1. Client의 모든 요청은 DispatcherServlet에게 전달된다.

    2. DispatcherServlet은 전달 받은 요청을 어느 Handler에서 처리 할 수 있는지 HandlerMapping에게 물어 본다.

    3. HandlerMapping은 요청 URL을 보고 Handler을 판단해서 DispatcherServlet에게 돌려준다.

    4. DispatcherServlet은 제어권을 handler에게 전달한다.

       이때 Handler 전처리, 후처리로 실행할 인터셉터 목록을 결정한다.

    5. Handler는 응답에 필요한 서비스를 호출/처리 한다.

    6. 그후 렌더링할 View Name과 Model을 DispatcherServlet에게 돌려준다.

    7. DispatcherServlet는 전달 받은 View Name을 ViewResolver에게 전달한다.

    8. ViewResolver는 View을 생성해서 DispatcherServlet에게 돌려준다.

    9. View에 Model과 컨트롤러를 전달한다.

    10. Response을 생성한다.

    11. 생성된 Response을 Client에게 전달한다.



    댓글

Designed by Tistory.