如何在Spring Web MVC中为所有@RestController设置上下文根?

时间:2017-11-13 13:13:27

标签: spring spring-mvc spring-boot spring-web

我希望将/api定义为我所有@RestController的根上下文,并且不希望为每个@RestController("/clients")指定它。

例如,我想写@RestController("/api/clients")而不是/api/clients,并在/main/resources/static处提供我的请求映射,但我的静态资源(/**中)仍在提供在server.servlet.contextPath=/api

因此,在application.properties中设置/api不是我的用例的解决方案,因为静态资源将在_bus.Send(EndPointName.SpmAuditLogService, goodsReceiptAuditCommand); 提供,这是我不想要的。

简而言之,我希望在Spring Web MVC中具有与JAX-RS @ApplicationPath("/api")相同的功能,这可能吗?

3 个答案:

答案 0 :(得分:0)

可能的解决方案之一(解决方法)是使用具有映射的父类

@RequestMapping(path="/api")
abstract class BaseController{
    ....
}

其他控制器可以扩展它

class OtherController extends BaseController {
  @RequestMapping(path="/clients")
  public ....clients(....){
   .....
  }
}

请注意,如果将@RequestMapping放在任何子类之上,它将被覆盖。与解释herehere

一样

答案 1 :(得分:0)

您可以在spring.jersey.application-path=/api

中设置application.properties个配置

答案 2 :(得分:0)

通过在您的application.properties中使用 spring.mvc.servlet.path 配置来设置所需的上下文根。

例如:

spring.mvc.servlet.path=/api/v1