인프런 커뮤니티 질문&답변

박희원님의 프로필 이미지
박희원

작성한 질문수

스프링 부트 - 핵심 원리와 활용

스프링 MVC 서블릿 컨테이너 초기화 지원

잘 이해가 안갑니다...

작성

·

508

·

수정됨

1

  1. MyContainerInitV1 : ServletContainerInitializer을 implement한 클래스로서 서블릿 컨테이너 초기화를 위해 작성됐다.

  2. HelloServlet : HttpServlet을 상속받은 Servlet이다.

  3. AppInit : 애플리케이션 초기화를 위한 인터페이스이다.

  4. AppInitV1Servlet : AppInit를 implement한 애플리케이션 초기화 클래스 ? onStartup()을 통해 서블릿 컨테이너를 초기화하고 서블릿도 등록한다.

  5. MyContainerInitV2: ServletContainerInitializer을 implement한 클래스로서 @HandlesTypes(AppInit.class) 해줌으로써 해당 AppInit의 onStartup()을 통해 서블릿 컨테이너의 ctx를 파라미터로 보내서 AppInit 객체를 생성한다?

    ================================
    제가 이해한 개념이 맞나요? 뭔가 용어들이 비슷해서 명확하게 이해가 안되는 것 같습니다. ㅠㅠ

    질문1) 컨테이너 초기화와 애플리케이션 초기화는 다른 건가요? 각각 뭐가 다르고 왜 해주는건지 잘 모르겠습니다. ㅠㅠ

    질문2) AppInit과 ServletContainerInitializer은 둘다 onStartup()를 가지고 있던데.. 서로 다른 역할을 하는 각각의 인터페이스죠..?

    질문3) AppInitV1Servlet 은 서블릿 컨테이너 초기화하고 서블릿도 등록하고, MyContainerInitV2도 서블릿 컨테이너 초기화와 서블릿 등록을 하게되는데 둘의 차이는 뭔가요?...너무 헷갈려요 ㅠㅠㅠㅠㅠ

답변 1

1

안녕하세요. 박희원님, 공식 서포터즈 David입니다.

AppInitV1Servlet은 애플리케이션 초기화를 구현한 것이고, 해당 애플리케이션 초기화는 컨테이너 초기화(MyContainerInitV2.onStartup())가 진행될 때 수행됩니다.

1번과 3번 질문 모두에 대해 서블릿 컨테이너 초기화2편 15분45초부터 설명해 주십니다.

2번: 초기화시 실행된다는 점을 제외하고는 다른 것입니다.

이 부분은 충분히 헷갈리실 수 있기 때문에 충분히 반복수강하시길 권장합니다.

감사합니다.

박희원님의 프로필 이미지
박희원

작성한 질문수

질문하기