ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS 100문 100답 Q.004~005(Spring Web MVC, Spring Bean Life Cycle)
    카테고리 없음 2022. 7. 18. 08:59

     

    키워드 풀이

     

    004. Spring Web MVC 란 무엇인가?

    개발시 사용되는 디자인 패턴. Model-View-Controller로 구성되며 client와 server의 로직을 분리하여 server에서의 수정이 client에 영향이 없도록 설계

    • Model
      데이터 관리 및 비즈니스 로직을 처리
      단순히 요청에 의한 로직만 처리하고 이 결과를 어디에, 어떻게 사용하는지는 전혀 상관하지 않음
      ex. DAO, DTO, Service 등
    • View
      비즈니스 로직 처리 결과를 통해 사용자 인터페이스가 표현되는 구간
      Model을 통해 전달받은 데이터가 어떤 데이터인지 전혀 상관하지 않음.
      html, jsp 등 화면을 구성하기도 하고, Rest API 서버 구현시 json응답으로 구성
    • Controller
      Model과 View를 연결해주는 역할

    • DispatcherServlet : 클라이언트에게 요청을 받아 응답까지의 MVC 처리과정을 통제한다.
    • HandlerMapping : 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정한다.
    • ViewResolver : Controller의 처리 결과(데이터)를 생성할 view를 결정한다.

    1. Client -> DispatcherServlet

    클라이언트의 요청.

    2. DispatcherServlet -> HandlerMapping

    DispatcherServlet이 요청을 가로채어 HandlerMapping에게 요청에 알맞는 Controller를 알려달라고 일을 시킨다.

    3. HandlerMapping -> DispatcherServlet -> ControllerAdapter -> Controller

    알맞는 Controller를 찾으면 DispatcherServlet은 해당 Controller에게 요청을 위임한다. 위 위임 과정은 ControllerAdapter가 해당되는 Controller에게 전달한다.

    4. Controller -> Service

    Controller는 맵핑되는 메서드를 실행하여 해당되는 Service는 비즈니스 로직을 수행한다.

    5. Service -> Controller

    Service는 비즈니스 로직을 처리한 후 결과를 Controller에게 다시 응답한다.

    6. Controller -> ControllerAdapter -> DispatcherServlet

    Controller는 응답받은 데이터를 어떤 view(ex jsp, html)를 통해 보여줄 것인지의 정보를 담아 DispatcherServlet에게 응답한다.

    7. DispatcherServlet -> ViewResolver

    DispatcherServlet는 Controller(ControllerAdapter)에게 받은 view에 대한 정보를 ViewResolver에게 넘긴다.

    8. ViewResolver -> DispatcherServlet

    ViewResolver는 jsp 또는 html을 찾아서 DispatcherServlet에게 응답한다.

    9. -> View

    DispatcherServlet는 응답받은 jsp 또는 html을 View에게 Render를 지시하고 결과적으로 클라이언트에게 View가 제공된다.

    DispatcherServlet란 무엇인가?

    DispatcherServlet은 서블릿 컨테이너(ex. 톰캣) 제일 앞단에서 서버로 오는 모든 요청을 받아 처리하는 프론트 컨트롤러이다. 즉, HTTP 프로토콜로 들어오는 모든 요청을 받아 적합한 세부 컨트롤러로 위임한다


     

    005. Spring Bean Life Cycle

    Spring Bean?

    스프링 IoC 컨테이너가 관리하는 자바 객체. new를 사용해 생성하는 것이 아닌 Spring에 의해 생성 관리 된다.

     

     

    등록 방법

    • Component Scanning
      • @Component
        • @Repository
        • @Service
        • @Controller
        • @Configration
    • XML이나 자바 설정 파일에 등록

    등록된 Bean 사용법

    • @Autowired or @inject
    • AppicationContext에서 getBean()으로 직접 꺼냄

    Life Cycle

    스프링 IoC 컨테이너 생성 => 스프링 빈 생성 => 의존관계 주입 => 초기화 콜백 메소드 호출 => 사용 => 소멸 전 콜백 메소드 호출 => 스프링 종료

    스프링 빈 생명주기 콜백 3가지

    • 인터페이스 ( 초기에 나온 방식으로 지금은 거의 사용하지 않음)
      • InitializingBean - afterPropertiesSet() 메소드로 초기화 지원 (의존관계 주입이 끝난 후에 초기화 진행)
      • DispsableBean - destroy() 메소드로 소멸 지원 (Bean 종료 전에 마무리 작업)
    • @Configuration
      • @Bean(initMethod = "초기화 콜백 메서드", destroyMethod = "소멸 전 콜백 메서드")
      • 설정 정보를 사용하기 때문에 코드를 커스터마이징 할 수 없는 외부라이브러리에서도 적용 가능
    • @PostConstruct, @PreDestroy 어노테이션
      • 자바에서 제공하는 어노테이션
      • 어노테이션 하나만 붙이면 되기 때문에 매우 편리
      • 커스터마이징이 불가능한 외부 라이브러리에서 적용이 불가능

     

    참고자료

     

    스스로 생각해보기!

    댓글

Designed by Tistory.