본문 바로가기

개발 패턴/MVC

[개발패턴] <MVC2> Servlet의 .doGet, .doPost, .doAction은 누가하는가

문제

  • doAction() 메서드가 static이 아니다.
  • 즉, 객체가 실행 중이다.
  • 하지만 객체화를 한 적이 없다.

그럼 new FrontCoroller()를 누가 하는가

  • 톰캣
    • 웹서버
    • 서블릿 컨테이너
      • 서블릿
        • .java
        • 서블릿 파일
        • not POJO
      • 컨테이너
        • 객체화를 해주는 주체이다.
        • 객체를 생성하는 주체이다.
        • new를 수행하는 주체이다.
        • 서블릿 컨테이너는 신호를(설정을) 받으면 해당 서블릿을 new 해주기로 약속되어있다.
          • 이 신호(설정)이 @WevServlet("*.do")이다.

@(컨테이너)으로 new를 수행하면 좋은 이유

  • 싱글톤 패턴을 유지시켜준다. 
    • 전체 프로그램에 해당 객체가 단 1개 존재하는 것이다.
    • 현재 우리가 직접 new 한 거들은 싱글톤 패턴이 전혀 지켜지지 않는다.
    • 컨테이너를 활용하면, 기존 해당 객체가 있다면 더 이상 new를 안 한다.
    • 스프링은 사실 스프링 컨테이너이다.