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

时间:2018-05-25 10:30:24

标签: java spring rest spring-mvc

我的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配置,我们能够以非常优雅的方式实现这一点,而无需重复" / api / domain1 /"所有@Path注释中的" / api / domain2 /。 我们已经设置了多个" jaxrs-server"以这种方式在特定CXF配置中的元素:

<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实现类似的功能,而无需重复&#34; api / domain1&#34;或&#34; api / domain2&#34;在多个控制器类的注释中 -

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

没有找到任何类型的资源,表明到目前为止这可能在某种程度上是可能的,也许这是不可能的,但如果有一些黑客如何做它会很好: - )

提前致谢,任何人!

1 个答案:

答案 0 :(得分:0)

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

首先如下所示:

QtConcurrent

第二个看起来像:

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

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