• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

안녕하세요 기선님 서블릿 어플리케이션 구조에 대해 질문드립니다

22.01.03 16:57 작성 조회수 173

0

이전에 기선님 강의인 스프링 웹 MVC를 수강하고 스프링 부트를 수강중입니다.

MVC 강의에서는 스프링 부트 없이 진행했던 터라 궁금증이 생겨 질문 드립니다.

(사진 첨부가 되지 않아 사진 URL을 등록했습니다.)

기존 MVC방식에서 서블릿 프로그램에서 스프링의 기능을 붙여가며 학습을 했을때 제가 생각한 이미지는 이러한 이미지 였는데요

스프링 부트를 적용해도 이와 동일한 이미지로 이해하면 될까요?

제가 선생님 강의를 듣고 이해하기로는 스프링 컨테이너와 서블릿 컨테이너는 별개이고,

컨텍스트 로드 리스너에 의해 Controller, ViewResolver, HandlerMapping과 같은 '빈'들은 root ApplicationContext에 접근 가능한 ServletContext에 등록이 되고 Service, Repository와 같은 빈들은 root ApplicationContext에 등록이 된다고 생각했는데요 맞는지 궁금합니다.

 

또 하나 질문을 드리자면 서블릿 컨텍스트는 톰캣에 의해 생성이 되어지는데

ApplicationContext는 DispatcherServlet을 통해 인스턴스화 된다

라는 내용을 봐서 그럼 스프링 IoC컨테이너를 서블릿 컨텍스트가 로드하는건가..? 라는 생각을 했는데 혹시 맞을까요?

 

질문이 길어서 죄송합니다. 좋은 강의 내주셔서 학습에 큰 도움이 되고있습니다 🙏

답변 1

답변을 작성해보세요.

3

스프링 부트 이전에 스프링 웹 프로젝트에서 스프링 컨테이너를 구성하는 방식을 그림으로 그려주셨는데요. 그 방법은 스프링 부트와는 많이 다릅니다. 스프링 부트는 "내장 웹 서버"에서도 설명하고 있지만 자바 애플리케이션 내부에 톰캣과 같은 서블릿 컨테이너를 만들고 그 안에 스프링 IoC 컨테이너를 하나만 만들어 쓰지만, 이전에는 (이전 방식은 몰라도 상관이 없지만..) 외부에 서블릿 컨테이너가 이미 떠있고, 그 안에 WAR로 패키징한 서블릿 애플리케이션을 배포하는 형태이고, 해당 애플리케이션의 web.xml 이나 자바 설정으로 두 개의 스프링 컨테이너가 상속 구조를 만드는 형태로 구성되어 있었습니다.

두번째 질문에서 서블릿 컨텍스트가 스프링 IoC 컨테이너를 만드는 것이 아니라 DispatcherServlet이 만들어 준다고 이해하시는게 맞습니다.DS도 결국에 서블릿이고 해당 서블릿을 초기화 하는 중에 스프링 IoC 컨테이너가 만들어 집니다.