繁体   English   中英

分离REST API和Spring Web服务的实现

[英]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.

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