SpringBoot之三层架构的详细解析

📅 2026/8/5 17:31:15
SpringBoot之三层架构的详细解析
3. 分层解耦3.1 三层架构3.1.1 介绍在我们进行程序设计以及程序开发时尽可能让每一个接口、类、方法的职责更单一些单一职责原则。单一职责原则一个类或一个方法就只做一件事情只管一块功能。这样就可以让类、接口、方法的复杂度更低可读性更强扩展性更好也更利用后期的维护。我们之前开发的程序呢并不满足单一职责原则。下面我们来分析下之前的程序那其实我们上述案例的处理逻辑呢从组成上看可以分为三个部分数据访问负责业务数据的维护操作包括增、删、改、查等操作。逻辑处理负责业务逻辑处理的代码。请求处理、响应数据负责接收页面的请求给页面响应数据。按照上述的三个组成部分在我们项目开发中呢可以将代码分为三层Controller控制层。接收前端发送的请求对请求进行处理并响应数据。Service业务逻辑层。处理具体的业务逻辑。Dao数据访问层(Data Access Object)也称为持久层。负责数据访问操作包括数据的增、删、改、查。基于三层架构的程序执行流程前端发起的请求由Controller层接收Controller响应数据给前端Controller层调用Service层来进行逻辑处理Service层处理完后把处理结果返回给Controller层Serivce层调用Dao层逻辑处理过程中需要用到的一些数据要从Dao层获取Dao层操作文件中的数据Dao拿到的数据会返回给Service层思考按照三层架构的思想如何要对业务逻辑(Service层)进行变更会影响到Controller层和Dao层吗答案不会影响。 程序的扩展性、维护性变得更好了3.1.2 代码拆分我们使用三层架构思想来改造下之前的程序控制层包名xxxx.controller业务逻辑层包名xxxx.service数据访问层包名xxxx.dao控制层接收前端发送的请求对请求进行处理并响应数据RestController public class EmpController { //业务层对象 private EmpService empService new EmpServiceA(); ​ RequestMapping(/listEmp) public Result list(){ //1. 调用service层, 获取数据 ListEmp empList empService.listEmp(); ​ //3. 响应数据 return Result.success(empList); } }业务逻辑层处理具体的业务逻辑业务接口//业务逻辑接口制定业务标准 public interface EmpService { //获取员工列表 public ListEmp listEmp(); }业务实现类//业务逻辑实现类按照业务标准实现 public class EmpServiceA implements EmpService { //dao层对象 private EmpDao empDao new EmpDaoA(); ​ Override public ListEmp listEmp() { //1. 调用dao, 获取数据 ListEmp empList empDao.listEmp(); ​ //2. 对数据进行转换处理 - gender, job empList.stream().forEach(emp - { //处理 gender 1: 男, 2: 女 String gender emp.getGender(); if(1.equals(gender)){ emp.setGender(男); }else if(2.equals(gender)){ emp.setGender(女); } ​ //处理job - 1: 讲师, 2: 班主任 , 3: 就业指导 String job emp.getJob(); if(1.equals(job)){ emp.setJob(讲师); }else if(2.equals(job)){ emp.setJob(班主任); }else if(3.equals(job)){ emp.setJob(就业指导); } }); return empList; } }数据访问层负责数据的访问操作包含数据的增、删、改、查数据访问接口//数据访问层接口制定标准 public interface EmpDao { //获取员工列表数据 public ListEmp listEmp(); }数据访问实现类//数据访问实现类 public class EmpDaoA implements EmpDao { Override public ListEmp listEmp() { //1. 加载并解析emp.xml String file this.getClass().getClassLoader().getResource(emp.xml).getFile(); System.out.println(file); ListEmp empList XmlParserUtils.parse(file, Emp.class); return empList; } }三层架构的好处复用性强便于维护利用扩展