我想了解HandlerMapping如何在基于注释的Spring MVC应用程序中工作。与在基于XML的配置中工作时一样,我们有一个默认值,如果要使用其他实现,则必须在XML文件以及URL映射策略中对其进行定义。
要了解基于批注的Controller应用程序中的HandlerMapping,我遇到了 DefaultAnnotationHandlerMapping,以前在v3之前是默认值。 1和现在 当前使用RequestMappingHandlerMapping。因此,如果我们不使用基于XML的配置和URL映射策略,那么我想了解如何定义此HandlerMapping。我遇到的另一件事是HandlerAdapter。所以这两件事让我感到困惑。
请分步说明Dispatcher Servlet截获请求时如何找到要使用的HandlerMapping以及URL映射策略在基于注释的应用程序中如何工作。
答案 0 :(得分:0)
您可以认为HandlerMapping
确定应通过哪种方式/框架来处理请求/ URL(例如,使用@Controller处理?使用JSP处理?等)
HandlerAdapter
驱动了处理此请求的实际工作流程,其中包含处理逻辑的实际实现。
高级逻辑:
DispatcherServlet
截获请求
找出哪个HandlerMapping
可以处理此请求。有关匹配逻辑,请参考HandlerMapping#getHandler()
。如果可以处理请求,它将返回一个通用对象(称为处理程序对象)。
找出哪些HandlerAdapter
可以处理此处理程序对象(通过检查HandlerAdapter#supports()
)。如果HandlerAdapter可以处理,它将处理(通过HandlerAdapter#handle
)。