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

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

我想定义 /api作为我所有 @RestController 的根上下文s 并且不想为每个人指定它。

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

因此,设置 server.servlet.contextPath=/apiapplication.properties不是我的用例的解决方案,因为静态资源将在 /api 提供。 ,这是我不想要的。

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

最佳答案

一种可能的解决方案(变通方法)是使用带有映射的父类

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

其他 Controller 可以扩展它
class OtherController extends BaseController {
  @RequestMapping(path="/clients")
  public ....clients(....){
   .....
  }
}

请注意,如果您将 @RequestMapping 放在任何子类的顶部,它将被覆盖。如解释 herehere

关于spring - 如何在 Spring Web MVC 中为所有 @RestController 设置上下文根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47265187/

相关文章:

java - Spring 从 Http 重定向到 Https 中断 Rest Controller 测试

java - 保存实体对象时 Hibernate 复合主键问题

hibernate - NoClassDefFoundError 与 Spring maven hibernate org/hibernate/ejb/HibernatePersistence

java - Spring Controller bean 在根上下文和 servlet 上下文中创建

java - Spring MVC 测试 : Controller Method Parameters

java - Spring 按类顺序对 bean 进行排序

java - Spring Web Flow——流程被重置

java - 具有默认用户的 Spring MVC Web 应用程序

java - 在一个对象上获取 HibernateProxy

java - Spring Boot Spring WebFlux 安全配置从属性文件加载凭据