ContextLoaderListener와 DispatcherServlet은 서로 다른 역할을 수행하는 Spring의 구성 요소입니다. ContextLoaderListener는 웹 애플리케이션이 시작될 때 루트 ApplicationContext를 초기화하고 구성하는 역할을 담당하며, DispatcherServlet은 웹 요청을 처리하기 위한 웹 계층의 ApplicationContext를 관리합니다.
기본적으로 ContextLoaderListener는 웹 애플리케이션의 시작 시에 호출되고, 그 때 루트 ApplicationContext를 초기화합니다. 반면에 DispatcherServlet은 클라이언트의 요청이 들어올 때마다 호출되어, 웹 계층의 ApplicationContext를 사용하여 해당 요청을 처리합니다.
ContextLoaderListener와 DispatcherServlet은 각각의 ApplicationContext를 관리하며, 보통 루트 ApplicationContext는 비웹(Non-web) 빈들을, 웹 계층의 ApplicationContext는 웹 관련 빈들을 관리합니다. 이 둘 간에는 부모-자식 관계를 형성할 수 있습니다.
ContextLoaderListener와 DispatcherServlet 각각이 자체적으로 ApplicationContext를 생성하고 빈을 관리합니다.
ContextLoaderListener:
DispatcherServlet:
ContextLoaderListener가 생성한 루트 ApplicationContext는 보다 글로벌하게 사용되는 빈을 관리하며, DispatcherServlet가 생성한 ApplicationContext는 웹 요청에 따라 동적으로 생성되어 웹 계층에서 사용되는 빈을 관리합니다. 두 ApplicationContext는 부모-자식 관계를 형성하여 공통 빈을 공유할 수 있습니다.