三层架构
controller :控制层,接收前端发送的请求,对请求进行处理,并响应数据。
service :业务逻辑层,处理具体的业务逻辑。
dao :数据访问层 (Data Access Object) (持久层),负责数据访问操作,包括数据的增、删、改、查。
拆分前
@RestController
public class EmpController{@RequestMapping("/listEmp")public Result list(){//1. 加载 emp.xml, 并解析 emp.xml 中的数据String file = this.getClass().getClassLoader().getResourse("emp.xml").getFile();List<Emp> empList = XmlParserUtils.parse(file, Emp.class);//2.对员工信息中的gender , job字段进行处理empList.stream().forEach(emp -> {String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");}else if("2".equals(gender)){emp.setGender("女");}String job = emp.getJob();if("1".equals(job)){emp.setGender("讲师");}else if("2".equals(job)){emp.setGender("班主任");}else if("2".equals(job)){emp.setGender("就业指导");}});//3.组装数据并返回return Result.success(empList);}
}
劣势:复用性差;难以维护。
拆分后
数据访问操作
public interface EmpDao{//获取员工列表数据public List<Emp> listEmp();
}
public class EmpDaoA implements EmpDao{@Overridepublic List<Emp> listEmp(){//1. 加载 emp.xml, 并解析 emp.xml 中的数据String file = this.getClass().getClassLoader().getResourse("emp.xml").getFile();List<Emp> empList = XmlParserUtils.parse(file, Emp.class);return empList;}
}
业务逻辑处理
public interface EmpService{//获取员工列表public List<Emp> listEmp();
}
public class EmpServiceA implements EmpService{private EmpDao empDao = new EmpDaoA();@Overridepublic List<Emp> listEmp(){List<Emp> empList = empDao.empList();//2.对员工信息中的gender , job字段进行处理empList.stream().forEach(emp -> {String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");}else if("2".equals(gender)){emp.setGender("女");}String job = emp.getJob();if("1".equals(job)){emp.setGender("讲师");}else if("2".equals(job)){emp.setGender("班主任");}else if("2".equals(job)){emp.setGender("就业指导");}});return empList;}
}
接收请求,响应数据
@RestController
public class EmpController{private EmpService empService = new EmpServiceA();@RequestMapping("/listEmp")public Result list(){List<Emp> empList = empService.listEmp(); //3.组装数据并返回return Result.success(empList);}
}
优势:复用性强;便于维护;利于拓展。