Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中为所有控制器URL预先添加一些文本_Java_Spring_Spring Boot_Url_Request Mapping - Fatal编程技术网

Java 如何在Spring中为所有控制器URL预先添加一些文本

Java 如何在Spring中为所有控制器URL预先添加一些文本,java,spring,spring-boot,url,request-mapping,Java,Spring,Spring Boot,Url,Request Mapping,我们已经在SpringBoot中开发了一些RESTAPI 现在我们想在所有的@RequestMapping中预先添加一些文本(API的版本,例如/v1/) 除了为每个@RequestMapping 示例:当前请求映射/employess和/cars/1/driver 需要像这样构建/v1/员工和/v1/汽车/1/驾驶员您至少可以通过两种方式来实现 选项1:扩展AbstractAnnotationConfigDispatcherServletInitializer,如下所示: public cl

我们已经在SpringBoot中开发了一些RESTAPI

现在我们想在所有的
@RequestMapping
中预先添加一些文本(API的版本,例如
/v1/

除了为每个
@RequestMapping


示例:当前请求映射
/employess
/cars/1/driver


需要像这样构建
/v1/员工
/v1/汽车/1/驾驶员

您至少可以通过两种方式来实现

选项1:扩展AbstractAnnotationConfigDispatcherServletInitializer,如下所示:

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


    @Override
    protected String[] getServletMappings() {
        return new String[] { "/v1/*" };
    }

}
选项2:在要预先设置版本的控制器上添加类级别的请求映射,如下所示

@RestController
@RequestMapping("/v1")
public class Controller {
}

我选择选项1。

您可以在
应用程序中使用此类属性。属性文件:

server.servlet.contextPath=/v1
或者,您可以拥有一个基本控制器类,并使用所有控制器类对其进行扩展

@RestController
@RequestMapping(value = "${rest.api.version}")
public class MyAbstractController {
}

并将
rest.api.version
存储在
application.properties
文件中。

如果您想用“/v1”附加每个请求,您可以通过在类级别使用@RequestMapping注释来实现,这样所有传入调用(其中包含“/v1”)都将进入控制器

@RestController
@RequestMapping("/v1")
public class YourController {
}

您可以添加一个如何设置当前映射的示例吗?@Arnaud更新了question@MehrajMalik你们有机会测试我的解决方案吗?我要求所有的控制器,而不仅仅是一个控制器!找到解决方案:此问题可能重复: