서블릿 컨테이너란?
서블릿은 개발자로 하여금 핵심 비즈니스 로직만 처리할 수 있도록 다양한 기능들을 수행한다
이러한 서블릿을 관리하는 서블릿들의 생성, 실행, 파괴, 즉 서블릿의 생명주기를 관리한다
스프링 컨테이너란?
스프링 컨테이너는 스프링 빈의 생명주기를 관리한다
스프링 빈의 생명주기는 다음과 같다
1
스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸자 콜백 -> 스프링 종료
#웹 어플리케이션 동작 원리
- 웹 어플리케이션이 실행되면 WAS가 web.xml을 로딩한다
- web.xml에 등록된 ContextLoaderListener(Java Class)가 생성된다. (ContextLoaderListner는 ApplicationContext를 생성하는 역할을 한다)
- 생성된 ContextLoaderListener는 root.xml을 로딩힌다
- root.xml에 등록된 Spring Container를 생성하고 Spring Bean을 등록, 의존관계를 주입한다
- 클라이언트로부터 request를 받는다
- DispatcherServlet을 생성한다
- DispatcherServlet은 servlet-context.xml를 로딩한다
- 두번째 Spring Container가 구동되며 응답에 맞는 PageController들이 동작한다