[英]Separating out REST API and implementation for Spring web services
我一直在使用諸如@RestController
和@RequestMapping
之類的Spring注釋在Spring Boot Web應用程序中生成簡單的服務。
因此,我有一個簡單的示例可以正常工作:
@RestController
public class HelloController {
@RequestMapping("/")
public String sayIt() {
return "Hello!";
}
}
現在,我想僅使用REST接口和DTO分離出一個API庫(jar)。 一個或多個單獨的庫將提供此接口的實際實現。 然后,我可以使用客戶端上的(輕量級)API庫來生成REST客戶端代理,以與任何實現進行對話。
那么...是否有任何注釋或配置分別標記REST接口和實現? 如果不是,那么使用Spring-y而不是使用JAX-RS注釋的方法是什么?
@Something1
public class HelloServiceApi {
@RequestMapping("/")
public String sayIt();
}
@Something2
public class HelloServiceImpl implements HelloServiceApi {
public String sayIt() {
return "Hello!";
}
}
我建議使用一個僅包含DTO對象的jar,而不包含任何邏輯。 然后,REST服務器和客戶端都可以使用它來傳輸對象。
客戶端不應依賴於REST war / jar或邏輯。
此外,我將嘗試確保我的控制器除了將DTO轉移到域模型對象之外,不保留任何邏輯,然后將其傳遞給業務邏輯層。
我認為,REST層僅應負責外部API,參數處理,發送到下面的層(服務層)並准備響應。
就是說,您應該在服務層使用不同的實現。 這樣可以使API / REST層保持不變。
服務層(將以不同的實現方式提供)應遵循一些公共接口,該接口隨后將注入到上述其余層中。
我是否回答了您的問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.