Spring MVC默认映射处理程序
问题内容:
基本上,使用Spring
MVC,我试图创建一个路由器控制器,该控制器将获取尚未由另一个控制器处理的任何URL,并将其路由到其各自的资源,或者如果找不到资源,则转发搜索请求。使用@RequestMapping(value="/{qry}", method = RequestMethod.GET)
成功捕获了其他控制器尚未捕获的请求(这似乎可以通过首先检查最具体的映射来解决),然后我可以执行所需的任何转发。但是,一旦我在请求中添加“
/”,映射就会中断并返回404。
因此,换句话说,"/some-long-path-or- something"
正确地映射到这个包罗万象的控制器,但是"/some/other/path"
(它没有映射到任何其他控制器)却没有被我的包罗万象。
如何实现呢?我已经阅读了一些有关拦截器和默认处理程序的内容,但是没有找到解决方案的运气。
感谢您的任何建议!
问题答案:
开箱即用,Spring自动注册一个DefaultAnnotationHandlerMapping
bean,该bean使用注释将请求与控制器匹配。在大多数情况下,它的默认行为都很好。
如果您DefaultAnnotationHandlerMapping
在上下文中声明自己的defaultHandler
属性,则它将覆盖默认属性,并允许您设置其属性,当所有显式处理程序都不匹配时将使用该属性。只需将“包罗万象”控制器注入该属性,然后注入Bob的Your
Uncle。