bee*_*bee 11 model-view-controller spring spring-boot
我是 Spring Boot 的新手,我正在创建一个没有 UI 的 RESTful API。
我在想是否应该使用业务服务并从那里调用存储库,还是直接从我的 REST 控制器调用存储库?
cas*_*lin 10
服务层不是 Spring Boot 独有的概念。它是一个软件架构术语,经常被称为模式。简单的应用程序可以跳过服务层。实际上,没有什么能阻止您从控制器层调用存储库方法。
但是,我强烈建议使用服务层,因为它主要用于定义应用程序边界。服务层职责包括(但不限于):
引用Martin Fowler 的企业应用程序架构模式目录中的服务层模式:
服务层从接口客户端层的角度定义了应用程序的边界及其可用操作集。它封装了应用程序的业务逻辑,在其操作的实现中控制事务和协调响应。
关注点分离是关键:
业务逻辑一开始可能很简单,不会提供更多那么简单的 CRUD 操作,但这并不意味着它将永远保持这种状态。一旦您需要处理访问权限,就不再是将请求从控制器直接路由到存储库的问题,而是检查访问和过滤数据的问题。请求在访问数据库之前可能需要验证和一致性检查,可能会应用规则和其他操作,因此您的服务会随着时间的推移获得更多价值。
即使对于简单的 CRUD 情况,我也会引入一个服务层,它至少可以将 DTO 转换为实体,反之亦然。
让您的控制器/存储库(或端口和适配器)保持愚蠢,让您的服务保持智能,您将获得一个可维护且可测试的解决方案。
| 归档时间: |
|
| 查看次数: |
9302 次 |
| 最近记录: |