目录
一、Controller(控制层)
顾名思义,业务控制,就是控制业务层Service的,它的作用主要是架起了外界与业务层沟通的桥梁,移动端,前端在调用接口访问相关业务时,都会通过Controller,由Controller去调相关的业务层代码并把数据返回给移动端和前端。特点:
- Controller层为控制层,一般使用 @RestController 或 @Controller 注解来标识。
- 在 Spring Boot 中,控制层负责接收请求并将请求转发到相应的服务层进行处理,同时将处理结果返回给客户端。
- 导入service层,调用你service方法,controller通过接收前端传来的参数进行业务操作,在返回一个指定的路径或数据表。
二、Service(业务管理层)
业务层,所有的内部的业务逻辑都会放在这里处理,比如用户的增删改查,或者发送个验证码或邮件,或者做一个抽奖活动等等等等,都会在Service中进行,当然,业务离肯定是离不开数据的支持,因此是必不可少的。特点:
- Service层为服务层,一般使用 @Service 注解来标识。
- 在 Spring Boot 中,服务层负责实现业务逻辑。它们相当于一系列操作的组合,常见的操作有查询、修改、删除等。
- 不直接对数据库进行操作,有接口和接口实现类,提供controller层调用方法
三、Dao(Mapper层)
数据持久化层,就是和数据库打交道的,而实现持久化层的框架又有很多,而常用的有两种:JPA和MyBatis,JPA是SpringBoot官方的,前身就是著名的三大框架之一的Hibernate,好处是不用手写SQL(当然它也支持手写,如果必要的话),国外用的比较多,而MyBatis则在国内比较流行,原因是它的灵活性非常高,但是需要手写SQL语句。特点:
- Dao层为数据访问层,数据访问层通常使用 JPA 或 MyBatis 等 ORM 框架来简化数据库操作。
- 在 Spring Boot 中,数据访问层是与数据库进行交互的层次,负责对数据库进行增删改查等操作。
- 针对数据库操作,基本上用的就是增删改查,就是一个接口,只有方法名,具体实现在mapper.xml中
四、Entity(实体层)
实体层主要用于定义业务领域中的实体对象,比如用户、产品、订单等。这些实体类通常包含属性、方法和与数据库表字段的映射关系,用于封装和操作数据。
- entity层为实体层,实体层一般使用 @Entity 注解来标识。
- 在 Spring Boot 中,实体层负责表示具体的数据模型。这些模型映射到数据库中的表结构。它们包含所有操作此实体类对象的方法,比如查询、添加、删除等。
- 存放的是实体类,属性值与数据库值保持一致,实现setter和getter方法
注:也有不同的写的是四层,即controller层、service层、dao层和entity层
五、configuration(配置层)
配置层在Spring Boot应用程序中扮演着至关重要的角色。它负责管理应用程序的配置信息,并提供对各种配置选项的灵活性和可定制性。(其在运行程序的时候会优先加载)
- Configuration层为配置层,配置层一般使用 @Configuration 注解来标识。
- 在 Spring Boot 中,配置层是整个系统的配置中心,负责定义和管理 Spring Boot 应用程序的配置信息。
六、Utils(工具层)
- Utils层为工具类层,可以自定义工具类,并使用 @Component 注解将其注入到容器中。
- 在 Spring Boot 中,工具类层负责封装一些常用的工具方法,例如日期格式化、加密解密等。
七、架构图例和图解
-----------------------------------------
| Presentation Layer |
-----------------------------------------
| Web Controllers |
-----------------------------------------
| |
-----------------------------------------
| Service Layer |
-----------------------------------------
| Business Services |
-----------------------------------------
| |
-----------------------------------------
| Data Access Layer |
-----------------------------------------
| Repositories |
| ORM Framework |
| Database |
-----------------------------------------
| |
-----------------------------------------
| Utility Layer |
-----------------------------------------
| Utility/Helper Classes |
-----------------------------------------