클라이언트에 요청이 왔을때 어떠한 흐름으로 진행이 이루어지는지 살펴보면서, mvc구조의 dispatcher servlet이 handlermapping과 handleradapter를 통해 적절한 컨트롤러를 찾는다는 점을 알게되었다.
사실 어렴풋이 알고는 있었지만 왜 굳이 나누었는가에 대한 의문점이 생겼고, 이에 대해 새롭게 알게된 부분들을 정리하여 기록하였다.
간략하게 프론트 컨트롤러에서 동적 페이지를 구성해줄 컨트롤러를 찾기까지 나타내면 위와 같다.
이때 HandlerMapping과 HandlerAdapter는 모두 인터페이스, 즉 기능적으로 분리되어 각각의 명확한 역할을 수행하기 위해 제공된다.
HandlerMapping
HandlerAdapter
이렇게 분리된 매핑과 어댑터 정보는 분리된 책임으로 명확한 기능을 수행할 수 있고, 특히 어댑터에서의 컨트롤러와 매핑의 디스패처서블릿 간의 호환성을 제공하여 결합도가 낮고 객체지향적인 구조를 만들 수 있게 된다.
스프링구조가 mvc만 있는 것은 아니기때문에, 다양한 컨트롤러가 존재할 수 있다는 점을 기억하자.
매핑과 어댑터가 분리된 이유 - https://stonehee99.tistory.com/24