Java SpringMVC(SpringBoot)-请求映射继承
编辑:请认真阅读问题,我不需要重复我所写内容的答案 环顾网络,我发现这个问题相当混乱。 我要寻找的是一种扩展Java SpringMVC(SpringBoot)-请求映射继承,java,spring,spring-mvc,spring-boot,request-mapping,Java,Spring,Spring Mvc,Spring Boot,Request Mapping,编辑:请认真阅读问题,我不需要重复我所写内容的答案 环顾网络,我发现这个问题相当混乱。 我要寻找的是一种扩展控制器的请求映射注释值的好方法 例如: @Controller @RequestMapping("/api") public class ApiController {} @Controller @RequestMapping("/dashboard") public class DashboardApiController extends ApiController {} 结果应该是
控制器的请求映射注释值的好方法
例如:
@Controller
@RequestMapping("/api")
public class ApiController {}
@Controller
@RequestMapping("/dashboard")
public class DashboardApiController extends ApiController {}
结果应该是(“/api/dashboard”)
这种方法显然只是覆盖了RequestMapping
值。
工作方法可能是而不是在派生类上放置RequestMapping注释
@Controller
public class DashboardApiController extends ApiController
{
@GetMapping("/dashboard")
public String dashboardHome() {
return "dashboard";
}
... other methods prefixed with "/dashboard"
}
这是唯一可行的办法吗?我真的不喜欢它。值在子类中被重写,而不是追加。您需要在子类中指定完整路径 您可以通过添加
@Controller
@RequestMapping("/api")
public class DashboardApiController extends WhateverClassWithWhateverMapping
{
@RequestMapping("/dashboard")
public String dashboardHome() {
return "dashboard";
}
}
在这种情况下,它将是“/api/dashboard”
子类上完全相同的参数重写的值,它们不会累加这不是您正在寻找的优雅解决方案,但这里有一个我使用的函数解决方案
@Controller
@RequestMapping(BASE_URI)
public class ApiController {
protected final static String BASE_URI = "/api";
}
@Controller
@RequestMapping(ApiController.BASE_URI + "/dashboard")
public class DashboardApiController extends ApiController {}
这个问题已经存在了。。。我知道可能是@MuhammadFaisalHyder的复制品。我们现在有了较新版本的SpringMVC和SpringBoot,但文档一直以来都有一点透明。另外,可能有人想出了一个很好的方法来解决这个问题。这并没有回答最初的问题WhateverClassWithWhateverMapping
在您的情况下是无用的,但在问题中,它是答案的关键