簡體   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