Spring 引导:@RequestMapping 优先级

Spring Boot: @RequestMapping Priority

我的Spring启动应用程序遇到如下问题:

我有两个@RequestMapping:

@RequestMapping(value = "/{categorySlug:^[a-z0-9-]+$}/{slug:^[a-z0-9-]+$}")
public ModelAndView aTutorial(

        @PathVariable(value = "categorySlug", required = false) String categorySlug,

        @PathVariable(value = "slug") String slug) {

    // (1)
}

@RequestMapping(value = "/questions/**")
public ModelAndView fix404() {

    // (2)
}

我用(2)将404页面重定向到首页。

但是当我转到 url 时:https://w3stacks.com/questions/fix,我想要它 (2) 但它请求在 (1) 中处理,由 /questions/fix{categorySlug)/{slug}.

那么在(2)上怎么办呢,或者说可以自定义@RequestMapping与否之间的优先级吗?

谢谢。

您可以忽略 aTutorial API 的 categorySlugquestions 字词。 像;

@RequestMapping(value = "/{categorySlug:^(?!questions)[a-z0-9-]+$}/{slug:^[a-z0-9-]+$}")

这样一来,您就不会在 aTutorial API 中收到任何以 questions 开头的电话,例如 /questions/etc,但也会忽略 /questionsCategory/etc

因此 fix404 端点将根据您的需要得到正确利用。