Spring MVC @RequestMapping继承
来自Struts2,我习惯@Namespace
在超类(或package-
info.java)上声明批注,继承类随后会在@Namespace
其祖先的批注中获取值并将其添加到Action的请求路径中。我现在正尝试在Spring
MVC中使用@RequestMapping
注解(如下所示,为简洁起见而修剪代码)执行类似的操作:
package au.test@RequestMapping(value = "/")
public abstract class AbstractController {
...
}
au.test.user
@RequestMapping(value = "/user")
public abstract class AbstractUserController extends AbstractController {
@RequestMapping(value = "/dashboard")
public String dashboard() {
....
}
}
au.test.user.twitter
@RequestMapping(value = "/twitter")
public abstract class AbstractTwitterController extends AbstractUserController {
...
}
public abstract class TwitterController extends AbstractTwitterController {
@RequestMapping(value = "/updateStatus")
public String updateStatus() {
....
}
}
/
按预期工作/user/dashboard
按预期工作- 但是,当我期望
/user/twitter/updateStatus
它不能工作并且检查日志时,我可以看到一个类似于以下内容的日志条目:
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping-
将URL路径[/ tweeter / updateStatus]映射到处理程序’twitterController’
我是否可以启用一个设置,该设置将扫描超类以查找@RequestMapping
注释并构造正确的路径?
我也认为@RequestMapping
在包装中定义package-info.java
是非法的?
回答:
以下基本上成为 和不
public abstract class TwitterController extends AbstractTwitterController { @RequestMapping(value = "/updateStatus")
public String updateStatus() {
....
}
}
这是预期的行为,因为您已覆盖@RequestMapping
在AbstractController
和中声明的原始内容AbstractUserController
。
实际上,当您声明AbstractUserController
它也覆盖了@RequestMapping
for时AbstractController
。它只是给您一种幻象,即/中的/
AbstractController
已被继承。
“是否有我可以启用的设置,该设置将扫描超类以查找@RequestMapping
注释并构建正确的路径?” 从来没听说过。
以上是 Spring MVC @RequestMapping继承 的全部内容, 来源链接: utcz.com/qa/429017.html