- BeanNameUrlHandlerMappping是利用Bean的 Name 或者 id 属性来作为 URL 路径使用,目标Controller类的bean的name属性必须以"/"为开头的请求路径,然后筛选出名称以“/”开头的 Bean,并把这些 Bean 的名称组成一个列表
属性 |
描述 |
detectHandlersInAncestorContexts |
是否从Context上下文中获取已经注册的映射 |
- BeanNameUrlHandlerMappping由AbstractUrlHandlerMapping继承而来,它的继承层次图如下:
- HandlerMapping 是通用接口,包含一个 getHandler(req:HttpServletRequest):HandlerExecutionChain 方法,该方法用来寻找请求对应的处理器链
- AbstractHandlerMapping,用 interceptors 保存拦截器,并负责选取拦截器并加入到 HandlerExecutionChain 当中
- AbstractUrlHandlerMapping,用 handlerMap 保存 url 和 “Handler” 之间的映射
- AbstractDetectingUrlHandlerMapping,从 Spring 容器中检出 URL 映射
- BeanNameUrlHandlerMapping,筛选出名称以“/”开头的 Bean,并把这些 Bean 的名称组成一个列表。
示例
<!--注入 BeanNameUrlHandlerMapping Bean--> <bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<!--在 name 或者 id 中单独指定路径--> <bean name="/welcome" class="coderead.springframework.mvc.WelcomeController" /> <bean id="/welcome" class="coderead.springframework.mvc.WelcomeController" />
<!-- 一般把路径指定在name属性中,容器把 "welcomeController" 作为 beanName,把 "/welcome" 作为别名 --> |
<bean id="welcomeController" name="/welcome" class="coderead.springframework.mvc.WelcomeController" />
- 从 Root WebApplicationContext (ContextLoaderListener)中获取映射
示例
<!-- 启用detectHandlersInAncestorContexts --> <bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="detectHandlersInAncestorContexts" value="true" /> </bean> |
来自< https://www.cnblogs.com/kendoziyu/p/SpingMvc-BeanNameUrlHandlerMapping.html>