• SpringBoot三层架构


    目录

    一、传统方式

     二、三层架构

     三、代码拆分

    1、dao层

    2、service层

    3、control层

    四、运行结果


    一、传统方式

              上述代码存在一定的弊端,在进行软件设计和软件开发中提倡单一责任原则,使代码的可读性更强,复杂性更低,可扩展性更好,更好的进行维护。所以也就有了三层架构的概念。

     二、三层架构

    controler:控制层,接收前端发送的请求,对请求进行处理,并响应数据。

    service:业务逻辑层,处理具体的业务逻辑。

    dao:数据访问层(data access Object(持久层)),是负责数据访问操作,包括增、删、改、查。

     

     三、代码拆分

    1、dao层

            首先在dao包下创建一个接口,这个接口名为EmpDao。(接口不能被实例化,只能被类实现。实现接口必须实现接口中的所有方法,除非该类本身是抽象类。方法不能包含方法体,接口中的方法隐式的被声明为共有抽象方法,即默认具有public abstract修饰符)

    1. public interface EmpDao {
    2. // 获取员工数据
    3. public List listEmp();
    4. }

            然后在dao包下创建imp包,再创建接口的实现类EmpDaoA。

    1. public class EmpDapA implements EmpDao {
    2. @Override
    3. public List<Emp> listEmp() {
    4. //1. 加载并解析emp.xml
    5. String file = "src/main/resources/emp.xml";
    6. System.out.println(file);
    7. List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
    8. return empList;
    9. }
    10. }

            为什么要创建接口,然后过实现类实现,而不是直接创建类去实现?为了提高代码的可维护性、扩展性和复用性,解耦,我进行数据访问的方式时不一样,为了代码更加的灵活,所以使用的接口。

    2、service层

    EmpService.java

    1. public interface EmpService {
    2. // 获取员工列表
    3. public List listEmp();
    4. }

    EmpServiceA.java 

    1. public class EmpServiceA implements EmpService {
    2. private EmpDao empDao=new EmpDapA();
    3. @Override
    4. public List<Emp> listEmp() {
    5. //1. 调用dao,获取数据
    6. List<Emp> empList = empDao.listEmp();
    7. //2. 对数据进行转换处理 - gender, job
    8. empList.stream().forEach(emp -> {
    9. //处理 gender 1: 男, 2: 女
    10. String gender = emp.getGender();
    11. if("1".equals(gender)){
    12. emp.setGender("男");
    13. }else if("2".equals(gender)){
    14. emp.setGender("女");
    15. }
    16. //处理job - 1: 讲师, 2: 班主任 , 3: 就业指导
    17. String job = emp.getJob();
    18. if("1".equals(job)){
    19. emp.setJob("讲师");
    20. }else if("2".equals(job)){
    21. emp.setJob("班主任");
    22. }else if("3".equals(job)){
    23. emp.setJob("就业指导");
    24. }
    25. });
    26. return empList;
    27. }
    28. }

            service层是处理具体的业务逻辑。它处理的数据是从dao层获取的,所有在EmpServiceA类中需要定义一个EmpDao对象用来获取处理数据。在EmpServiceA类中的方法中通过EmpDao实例对象方法获取数据。

    3、control层

    EmpController.java

    1. @RestController
    2. public class EmpController {
    3. private EmpService empService=new EmpServiceA();
    4. @RequestMapping("/listEmp")
    5. public Result list(){
    6. // 调用service,获取数据
    7. List<Emp> empList = empService.listEmp();
    8. //3. 响应数据
    9. return Result.success(empList);
    10. }
    11. }

             @RestController是Spring框架中的一个注解,用于标记一个类作为RESTful Web服务的控制器。它结合了@Controller和@ResponseBody两个注解的功能,使得该类中的方法可以直接返回JSON或XML等格式的数据,而无需手动添加@ResponseBody注解。

    四、运行结果

    如果程序没有出错会有如下结果

  • 相关阅读:
    Linux---用户组命令(groupadd、groupdel、groupmod、newgrp、getent)
    java将list转为逗号隔开字符串,将逗号连接的字符串转成字符数组,​将逗号分隔的字符串转换为List​(Java逗号分隔-字符串与数组相互转换)
    健康报告-设计与实现
    云计算与大数据第6章 云计算节能技术题库及答案
    你真的了解token续期嘛?
    NPDP考试需要携带什么?文具携带说明
    Gmail发送邮件的配置方法
    异或和大小比较类问题——抓住最高位:CF1863F
    hdoj 3549 Flow Problem 【最大流入门 dinic算法】
    稀碎从零算法笔记Day12-LeetCode:找出字符串中第一个匹配项的下标
  • 原文地址:https://blog.csdn.net/2302_77758423/article/details/139723324