繁体   English   中英

如何为Spring REST控制器设置多个基本路径(例如,一个或多个软件包的通用基本路径)

[英]How to set multiple base paths for Spring REST controllers (e.g. common base path for one or more packages)

我的Spring Boot应用程序中有几个REST端点。 我们当前正在使用JAX-RS / Apache CXF(在Facade REST端点类中使用javax.ws.rs.Path批注),并且当前正在迁移到Spring REST(MVC)。 由于端点类数量众多,我们具有以下结构:

com.example.domain1.Facade1.java - @Path("facade1path)
com.example.domain1.Facade2.java - @Path("facade2path)
... (much more "Facade" classes in com.example.domain1 package)

com.example.domain2.Facade3.java - @Path("facade3path)
com.example.domain2.Facade4.java - @Path("facade4path)
... (much more "Facade" classes in com.example.domain2 package)

并且我们以将路径设置为的方式配置了应用程序:

"/api/domain1/facade1path" -> Facade1.java
"/api/domain1/facade2path" -> Facade2.java
"/api/domain2/facade3path" -> Facade3.java
"/api/domain2/facade4path" -> Facade4.java

使用旧的JAX-RS / CXF配置,我们能够以非常优雅的方式实现此目的,而不必在所有@Path注释中重复“ / api / domain1 /”或“ / api / domain2 /”。我们设置了多个“特定CXF配置中的jaxrs-server”元素以这种方式:

<jaxrs:server id="Domain1Server" address="/api/domain1" basePackages="com.example.domain1" />
<jaxrs:server id="Domain2Server" address="/api/domain2" basePackages="com.example.domain2" />

它有效:-)

有什么方法可以实现与Spring REST / MVC类似的功能,而不必在多个控制器类的注释中重复“ api / domain1”或“ api / domain2”-

@RequestMapping("api/domain1/facade1path"), @RequestMapping("api/domain1/facade2path"),等?

到目前为止,还没有发现任何资源表明这在某种程度上可以通过Spring实现,也许是不可能的,但是如果有一些技巧可以做到这一点,那就太好了:-)

预先感谢任何人!

在Spring中创建两个Controller类,并在controller类级别设置baseUrl。

首先将如下所示:

@RestController
@RequestMapping("/api/domain1")
public class DomainOneController {

@RequestMapping("/facade1path"), 
@RequestMapping("/facade2path") ...
}

第二个看起来像:

@RestController
@RequestMapping("/api/domain2")
public class DomainTwoController {

@RequestMapping("/facade3path"), 
@RequestMapping("/facade4path") ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM