SpringMVC的工作流程很重要,而在实际开发中我们会用注解进行开发,比如使用@Controller
来标注控制器,使用@RequestMapping
来映射URL请求到具体的处理函数,而其背后的运行流程其实更加重要。SpringMVC的设计体现出软件开发中非常重要的架构设计原则的应用:“关注点分离”和”单一职责“。
在复习SpringMVC的运行流程时,对HandlerMapper
和HandlerAdapter
的职能产生了疑惑,这里对两者的区别做一个记录。未来有机会再补上SpringMVC的完整运行流程。
HandlerMapper
& HandlerAdapter
的区别:
HandlerMapper
抽象了请求URL到请求处理器之间的映射,而HandlerAdapter
用于封装对请求处理器的真正调用。打个比方讲,当某个客户请求到达时,DispatcherServlet
会询问HandlerMapper
哪个请求处理器能处理,然后找到支持该请求处理器的Hand