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