概述
Spring MVC三个映射处理器:
BeanNameUrlHandlerMapping
ControllerClassNameHandlerMapping
SimpleUrlHandlerMapping
详细使用可以参考
易百教程 » Spring MVC控制器类名称处理映射
我主要想介绍一些,如果三个映射处理器一起使用,包括和开启Annotation功能的时候框架是如何处理的。
DispatcherServlet有一个handlerMapping的ArrayList对象,所有配置的处理器都将在这个list中维护。每个handlerMapping有一个handlerMap的HashMap对象,维护着注册的控制器。
如果开启注解功能,那这三个映射器配置文件都不能配置,如果配置其中一个或多个,注解将失效。而@Controller的控制器类将由ControllerClassNameHandlerMapping处理器处理。
如果配置多个映射器,那他们分别扫描配置文件的配置,对符合各自映射条件的控制器进行注册。在访问Web的时候,会遍历handlerMapping的List,直到找到第一个符合要求的handler返回。