스프링 MVC의 구조는 아래의 그림과 같다.
동작 순서는 다음과 같다. 이전 글에 마지막에 복기했던 내용과 거의 흡사하다.
스프링 MVC의 큰 강점은 스프링 MVC에 존재하는 대부분의 기능을 인터페이스 형태로 제공하기 때문에, DispatcherServlet의 코드 변경 없이, 인터페이스를 구현하는 것으로 원하는 기능을 변경하거나 확장할 수 있다는 점이다.
스프링 자체에서도 이 인터페이스들을 구현한 클래스들을 제공해주는데, 어떤 구현체들이 있고, 그 구현체들이 어떤 동작을 하는지에 대한 설명은 생략하겠다.
참고.
최근에는 스프링을 사용하기 위해 해야하는 설정들을 자동화해놓은 스프링 부트를 이용해서 많이 개발을 한다.
스프링 부트는 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버 등등 웹 MVC가 동작되기 위한 여러 요소들을 자동으로 등록해준다. 사용자가 직접 이런 요소들을 확장해서 쓸 일은 흔하지 않기 때문에, 필요하다면 그 때 찾아보자.