본문 바로가기

Spring

스프링 컨테이너와 서블릿 컨테이너와의 관계

서블릿 컨테이너는 서블릿 객체의 생명주기를 관리하고 클라이언트의 HTTP 요청에 따라 맵핑된 서블릿 객체를 찾아 service() 메서드를 실행시킨다. 톰캣은 이러한 서블릿 컨테이너 기능을 포함한 WAS로 스프링 부트 어플리케이션을 실행시키면 톰캣 서버도 실행되며 서블릿 컨테이너의 역할을 수행한다.  결국 톰캣도 하나의 자바 프로그램이다.

 

 스프링 부트 어플리케이션을 실행시키면 @ComponentScan을 통해 빈을 등록하고, @EnableAutoConfiguration가 스프링 부트의 autoconfigure패키지의 /META-INF/spring.factories 에서 EnableAutoConfiguration 의 키 값으로 설정된 패키지를 찾아 실행시키므로써 빈을 등록한다.

/ META-INF/spring.factories 에서 @EnableAutoConfiguration에 의해 빈으로 등록될 객체 설정 목록

 

이 과정에서 톰캣 또한 실행되고 DispatcherSerlvet 또한 생성되어 톰캣 서블릿 컨테이너에 적재된다. 그리고 DispatcherServlet에서 사용하는 HandlerMapping, HandlerAdapter 등의 객체는 스프링 컨테이너에서 관리된다!! 

 

즉, 서블릿 컨테이너에서는 오직 서블릿 객체만 관리하고 그 이외의 객체들은 모두 스프링 컨테이너에 의해 관리된다. 어플리케이션을 실행시킬 때 스프링 부트에 의해 톰캣이 실행되고 DispatcherServlet는 서블릿컨테이너 등록된다. 그리고 ServletDIspatcher에게 필요한 객체들은 스프링 부트에 의해 생성되고 주입되는 것이다.

 


<참고링크>

https://gowoonsori.com/spring/architecture/

 

[SPSP] Bellman Ford

단일 최단경로를 구하는 알고리즘인 Bellman Ford알고리즘에 대해 정리하고 직접 구현해보는 글

gowoonsori.com

https://velog.io/@jihoson94/Spring-Boot%EB%A5%BC-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90-1-.-EnableAutoConfiguration

 

Spring Boot를 살펴보자 1 . @EnableAutoConfiguration

Spring MVC를 맛보고 이어서 실제로는 Spring Boot기반으로 대부분 프로젝트를 진행할 테니 Spring Boot를 한번 정리해보겠습니다.Spring Boot helps you to create stand-alone, production-grade Sprin

velog.io