SpringBoot项目中各层的关系和作用

本文详细介绍了SpringBoot应用的六层架构,包括Controller(控制层)、Service(业务管理层)、Dao(Mapper层)、Entity(实体层)、Configuration(配置层)和Utils(工具层)。每一层都有其特定的功能和角色,如Controller负责外部请求的处理,Service实现业务逻辑,Dao处理数据库交互,Entity定义实体对象,Configuration管理应用程序配置,Utils封装常用工具方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Controller(控制层)

 二、Service(业务管理层)

三、Dao(Mapper层)

四、Entity(实体层)

五、configuration(配置层)

六、Utils(工具层)

七、架构图例和图解 


一、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     |
-----------------------------------------

### Spring Boot之间的交互与关联 #### 1. **Controller ** `Controller` 作为应用的入口,主要负责接收 HTTP 请求并调用 `Service` 完成具体的业务逻辑处理。它通过注解如 `@RestController` 或 `@Controller` 来标记,并利用 `@RequestMapping`, `@GetMapping`, `@PostMapping` 等注解定义接口路径请求方式。 当接收到外部请求时,`Controller` 将参数传递给 `Service` 进行进一步处理[^1]。完成后,再将结果返回给客户端。 ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable("id") Long id) { return new ResponseEntity<>(userService.getUserById(id), HttpStatus.OK); } } ``` --- #### 2. **Service ** `Service` 是核心业务逻辑所在的地方,主要用于实现复杂的业务功能。该会调用 `DAO/Mapper` 执行数据库操作,并可能涉及多个 DAO 的协作。 此外,`Service` 还承担事务管理的任务,确保数据的一致性完整性。通常使用 `@Transactional` 注解来声明事务边界。 ```java @Service @Transactional public class UserService { @Autowired private UserDao userDao; public User getUserById(Long id) { return userDao.findById(id).orElse(null); // 调用 DAO 获取用户信息 } public void saveUser(User user) { userDao.save(user); // 调用 DAO 存储用户信息 } } ``` --- #### 3. **DAO/Repository (Mapper) ** `DAO`(Data Access Object)或 `Mapper` 是用于访问数据库的操作。这一实现了对数据库的具体 CRUD 操作,通常是基于 ORM 工具(如 Hibernate、JPA 或 MyBatis)。在 Spring Boot 中,可以通过 `@Repository` 注解标注此类组件[^1]。 对于 MyBatis 用户来说,还可以直接编写 XML 映射文件或者使用注解形式定义 SQL 查询语句。 ```java @Repository public interface UserDao extends JpaRepository<User, Long> { Optional<User> findById(Long id); List<User> findByName(String name); } ``` --- #### 4. **Configuration 配置** `Configuration` 作用是对整个应用程序的行为进行全局设置。它可以用来加载属性文件、注册 Bean 定义以及初始化第三方库等功能[^1]。 例如,在 Shiro 认证框架集成过程中,需要配置安全策略: ```java @Configuration public class SecurityConfig { @Bean public Realm myRealm() { return new MyCustomRealm(); // 自定义领域对象 } } ``` --- #### 5. **Utils 工具类** 虽然不属于标准分的一部分,但工具类往往被广泛应用于各个模块间共享通用函数。比如日期转换器、字符串处理器等都可以集中放置在此处以便重复利用[^1]。 --- #### 总结:各间的通信流程 - 当前端发起请求到达服务器端口后,首先进入的是 `Controller` 控制器; - 接着由控制器委托给对应的 `Service` 方法去履行实际职责; - 如果涉及到持久化存储,则继续向下流转至 `DAO/Mapper` 执行相应命令; - 整个过程结束后沿原路逐级回传最终反馈消息直至呈现于界面上供使用者查看。 --- 相关问题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值