
Spring과 Spring Boot의 차이
- Spring
- WAR(Web Application Archive) 생성 : Servlet Container에 배치하는 웹 어플리케이션 압축 포맷
- 외장 톰캣을 이용해서 WAR배포
- Spring Boot
- WAR / JAR(Java Archive) 생성 : JRE(JVM) 로 바로 실행 가능한 자바 어플리케이션 압축 포맷
- 내장 톰캣을 이용해서 JAR 배포
- JRE(JVM)에다 그냥 자바 어플리케이션 실행하듯 Tomcat 구동과 동시에 어플리케이션 배포
Spring Boot (Tomcat + Spring) 동작 과정

동작 과정(Request -> Processing -> Response) 순서
- Request 가 들어오면 Connection Queue에 적재해놓은 후 Thread 할당 (1요청 1스레드) 후 Catalina(Tomcat Engine)에 전달
- Catalina는 건제받은 ServletRequest를 HttpServletRequest로 변환 후 Servlet 할당
- DispatcherServlet 처리 결과 반환
Spring MVC 구조

동작 순서
- Dispatcher Servlet이 클라이언트의 요청을 받는다.
- 요청을 어떤 컨트롤러에게 요청을 위임할지 Handler Mapping을 통해 컨트롤러를 찾는다.
- 컨트롤러를 찾으면 Handler Adapter에게 찾은 컨트롤러에게 요청을 위임하도록 한다.
- Handler Adapter가 찾은 컨트롤러에게 요청을 위임한다.
- 컨트롤러는 비즈니스 로직을 처리 후 ModelAndView를 Handler Adapter에게 전달 후 Handler Adapter가 처리한다.
- 만약 컨트롤러가 View 이름을 반환하면 ViewSolver를 통해 View를 반환
- 8. ModelAndView를 반환
💡💡💡
- DispatchServlet은 HandlerAdapter의 응답으롤 String, ModelAndView, Object중 하나를 받는다.
DispatchServlet는 @ResponseBody 여부에 따라 ViewResolver or MessageConverter 실행
- View 반환 -> ViewTemplate + Model : ViewResolver 사용
- Json 반환 -> Model 반환 (@ResponseBody 명시되어 있다면) : MessageConverter 사용
- Controller가 String을 반환 - ViewTemplate에서 맞는 명칭의 정적페이지 반환
Controller가 ModelAndView를 반환 - ViewTemplate + Model 함께 반환(동적페이지 반환)
참고자료
- ASAC 06 수업자료