在 Spring Boot 中,常见的项目结构通常按照功能和职责划分为不同的层,其中包括控制器(Controller)、存储库(Repository)、模型(Model)、映射器(Mapper)和服务(Service)。下面解释每个层的作用和区别,以及传统三层结构与变体结构各自定义、区别
目录
Springboot框架的传统三层结构
1.Controller(控制器):
控制器层负责处理用户的请求和响应。
它接收来自客户端的请求,根据请求的内容调用适当的服务层方法,并返回响应给客户端。
控制器通常与 Web 框架(如 Spring MVC)结合使用,用于路由请求、处理验证、数据转换等。
2.Repository(存储库):
存储库层负责与数据库或其他数据存储系统进行交互。
它提供了一组方法,用于执行常见的数据库操作,如创建、读取、更新和删除(CRUD)。
存储库使用持久化技术(如 Spring Data JPA)来简化数据库操作,并提供高级查询和数据访问功能。
3.Model(模型):
模型层包含与应用程序业务逻辑相关的领域对象或实体类。
模型对象代表了应用程序中的实体、数据或业务规则。
模型对象通常与数据库中的表或集合相对应,并通过存储库层来进行持久化。
四层变体结构
而关于 Controller-Mapper-Service-Model 这种划分方式,它是一个在传统的三层架构(表现层-业务逻辑层-数据访问层)上的一种变体。以下是每个层的作用和区别:
1.Controller(控制器):
控制器层的作用与上述描述的一致,负责处理用户的请求和响应。
它接收来自客户端的请求,然后将请求委派给适当的服务层方法,并将响应返回给客户端。
2.Mapper(映射器):
映射器层负责在不同数据对象之间进行转换和映射。
它用于将从控制器层接收的输入数据转换为服务层预期的数据格式,并将服务层返回的数据转换为适合客户端的响应格式。
3.Service(服务):
服务层包含应用程序的业务逻辑。
它负责处理业务操作、协调不同的存储库(Repository)和执行其他复杂的业务逻辑。
服务层可以调用一个或多个存储库来处理数据持久化和查询。
4.Model(模型):
模型层的作用与前述描述的一致,包含领域对象或实体类,代表应用程序中的数据和业务规则。
二者区别
区别是,在 Controller-Mapper-Service-Model 的分层架构中引入了映射器层,它的主要作用是处理数据的转换和映射。映射器层的存在可以解耦控制器层和服务层之间的数据格式不一致问题,提高代码的可读性和可维护性。
总的来说,选择使用哪种分层架构取决于项目的规模和复杂性,根据项目的需求和团队的实际情况来选择合适的架构划分方式。