在看Spring4,1 文档时, 发现了 ControllerClassNameHandlerMapping 这个东西, 简单来说, 作用是将 MyController 这样的名字, 自动映射成 /my/** 这样的URL, 于是我就猜想用它是不是就可以省略掉Controller类上的@RequestMapping . 于是一段痛苦的经历开始了. 下面记录一下配置过程中遇到了几个问题和结论.
第一次尝试: 配置
配置方法非常简单:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
然后一个不带 @RequestMapping的类: (错误示例)
@Controller
public class AccountController {
public String add() {
return "account/hello";
}
}
和一个 hello.html, 内容任意.
异常现象1. 无法请求ResourceHandler中注册的静态资源文件.
异常现象2. account/hello可以正确返回, 但 account/add 异常: 无法找到模板.
原因及结论
优先级问题:
在其他都使用默认配置