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() {

....

}

}

这是预期的行为,因为您已覆盖@RequestMappingAbstractController和中声明的原始内容AbstractUserController

实际上,当您声明AbstractUserController它也覆盖了@RequestMappingfor时AbstractController。它只是给您一种幻象,即/中的/

AbstractController已被继承。

“是否有我可以启用的设置,该设置将扫描超类以查找@RequestMapping注释并构建正确的路径?” 从来没听说过。

以上是 Spring MVC @RequestMapping继承 的全部内容, 来源链接: utcz.com/qa/429017.html

回到顶部