Spring 프레임워크는 웹 프레임워크가 아니다.
Java기반의 프레임워크로서 여러 모듈로 구성되어 있는데, 이 중 웹 애플리케이션을 만들고자 등장한 것이 SpringMVC 모듈이다.
SpringMVC를 사용중 이라면 자주 만나는 용어가 Servlet Container(서블릿 컨테이너) 와 DI Container (DI 컨테이너 혹은 Spring Container, IoC Container라고도 불린다 여기선 DI Container로 통일해서 사용하겠다) 이다.
https://jojoldu.tistory.com/28?category=635883
Servlet Container는 Servlet 저장소라고 봐도 무방하다. Java로 웹을 개발하기 위해 여러 Servlet들이 필요한데, 이러한 Servlet들의 Life Cycle(생명주기) 관리, 멀티쓰레드 지원 등을 하고 있는 것이 Servlet Container이다.
우리가 알고 있는 대표적인 Servlet Container가 Tomcat 이다.
SpringMVC역시 Servlet Container가 관리하고 있는 Servlet이다.
그래서 Servlet 없이 SpringMVC만 있으면 된다고 하는것은 비지니스 로직을 Spring을 통해 처리하겠다는 것이지 Servlet이 필요없다는 얘기가 아니다.
SpringMVC로의 모든 요청과 응답은 DispathcerServlet이 관리하고 있다.
URL요청이 오면 이를 가로채서 HandlerMapping(@RequestMapping으로 봐도 무방)에게 해당 요청을 처리할 수 있는 Controller를 찾아내어 요청을 Controller에게 보내고 결과값을 리턴해준다.
https://jojoldu.tistory.com/28?category=635883
Spring이 제공하는 대표적인 DI Container는 BeanFactory와 ApplicationConext가 있다.
https://jojoldu.tistory.com/28?category=635883