首页 > 其他分享 >Spring Boot 三层架构开发模式入门

Spring Boot 三层架构开发模式入门

时间:2024-10-05 20:19:11浏览次数:9  
标签:逻辑 架构 入门 Service Spring 代码 Boot Controller id

在 Spring Boot 项目中,构建清晰、易于维护的代码结构至关重要。传统业务逻辑方式往往将所有代码混杂在一起,导致代码难以理解、修改和扩展。三层架构模式的出现正是为了解决这些问题,让我们深入了解它带来的改变。

一、传统业务逻辑方式

假设我们要实现一个简单的员工查询功能,传统方式可能会将所有代码写在 Controller 层:

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/{id}")
    public Employee getEmployee(@PathVariable Long id) {
        String sql = "SELECT * FROM employees WHERE id = ?";
        return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(Employee.class));
    }
}

这段代码看似简洁,却隐藏着以下问题:

  • 代码耦合度高: Controller 层直接依赖 JdbcTemplate,与数据访问细节紧密绑定。

  • 职责不清晰: Controller 层既负责处理请求,又负责数据访问逻辑,违反了单一职责原则。

  • 代码难以复用: 如果其他模块需要查询员工信息,只能复制这段代码,造成冗余。

  • 难以维护和扩展: 当数据库操作发生变化时,所有涉及到该操作的代码都需要修改,增加了维护成本。

二、三层架构模式:分层解耦,各司其职

1.其实我们上述案例的处理逻辑呢,从组成上看可以分为三个部分:

  • 数据访问:负责业务数据的维护操作,包括增、删、改、查等操作。

  • 逻辑处理:负责业务逻辑处理的代码。

  • 请求处理、响应数据:负责,接收页面的请求,给页面响应数据。

2.为了解决传统方式的弊端,我们引入三层架构模式,将代码划分为以下三层:

  • 表现层(Controller): 负责接收前端请求,调用 Service 层处理业务逻辑,并将处理结果返回给前端。

  • 业务逻辑层(Service): 负责处理具体的业务逻辑,例如:参数校验、业务规则判断、调用其他服务等,并调用 Repository 层进行数据操作。

  • 数据访问层(Dao): 负责与数据库交互,进行数据的增删改查操作,屏蔽底层数据库操作细节。

 

3.基于三层架构的程序执行流程:

  • 前端发起的请求,由Controller层接收(Controller响应数据给前端)

  • Controller层调用Service层来进行逻辑处理(Service层处理完后,把处理结果返回给Controller层)

  • Serivce层调用Dao层(逻辑处理过程中需要用到的一些数据要从Dao层获取)

  • Dao层操作文件中的数据(Dao拿到的数据会返回给Service层)

 可以简单的理解为:要去一个盒子套盒子的盒子里面取东西,得先依次由外到内打开所有盒子,拿到东西,再由内到外把盒子还原为初始状态。

三、解耦后的代码示例:清晰、易维护的结构

让我们用三层架构模式重构之前的员工查询功能:

开发顺序有两种,根据实际情况选择

方式一:Controller   ->   Service   ->   Dao

方式二:Dao   ->   Service   ->   Controller

1. 数据访问层 (Dao):

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
    //与数据库交互
}

EmployeeRepository 负责直接与数据库交互,当然,复杂的SQL语句也可以通过mybatis映射文件进行操作,都是一个道理。

2. 业务逻辑层 (Service):

@Service
public class EmployeeService {

    @Autowired
    private EmployeeRepository employeeRepository;

    public Employee getEmployeeById(Long id) {
        // 可以在这里添加业务逻辑,例如权限校验等
        return employeeRepository.findById(id).orElseThrow(() -> new RuntimeException("Employee not found"));
    }
}

EmployeeService 负责处理具体的业务逻辑,例如根据 ID 查询员工信息,并处理可能出现的异常。

3. 表现层 (Controller):

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @GetMapping("/{id}")
    public Employee getEmployee(@PathVariable Long id) {
        return employeeService.getEmployeeById(id);
    }
}

EmployeeController 只负责接收请求参数,调用 EmployeeService 处理业务逻辑,并返回结果。

四、三层架构模式带来的优势

通过上面的代码示例,我们可以看到三层架构模式带来的好处:

  • 降低耦合度: 各层之间通过接口交互,降低了层与层之间的依赖,提高了代码的灵活性。

  • 提高代码复用性: 将业务逻辑封装在 Service 层,可以方便地在不同的 Controller 或其他模块中复用。

  • 提高代码可读性和可维护性: 将代码逻辑分层,使得代码结构更加清晰,易于理解和维护。

  • 易于扩展: 当需求发生变化时,只需要修改相应的层即可,其他层不受影响。

五、总结

三层架构模式是 Spring Boot 项目开发中常用的架构模式,它可以有效地提高代码的质量和可维护性。通过将代码逻辑分层,我们可以降低代码的耦合度,提高代码的可读性和可复用性,从而使我们的项目更加健壮和易于扩展。

以上就是关于三层架构的有关知识,感谢各位看官的观看,下期见,谢谢~

标签:逻辑,架构,入门,Service,Spring,代码,Boot,Controller,id
From: https://blog.csdn.net/weixin_64178283/article/details/142718148

相关文章

  • springboot+vue基于的电商购物系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为现代社会不可或缺的一部分。电子商务不仅改变了人们的购物方式,还极大地推动了全球经济的发展。近年来,电商平台如雨后春笋般涌现,市场竞争日益激烈。为了在激烈的市场竞争中脱颖而出,电商平台需要......
  • springboot+vue基于SpringBoot的经典诗文学习平台【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,传统文化的学习与传播方式正经历着深刻的变革。经典诗文作为中华文化的瑰宝,承载着千年的智慧与情感,对于提升国民文化素养、增强民族认同感具有重要意义。然而,传统的学习方式如翻阅纸质书籍、参加诗词讲座等,在时......
  • ROS基础入门——实操教程
    ROS基础入门——实操教程前言本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。RubyRose,放在这里相当合理本文初编辑于2024年10月4日CSDN主页:https://blog.csdn.net/rvdgdsva博客园主页......
  • springboot社区管理系统-计算机毕业设计源码68405
     基于微信小程序的社区管理系统的设计与实现摘要随着移动互联网的快速发展,微信小程序作为一种轻量级的应用程序,因其便捷性、易用性和广泛的用户基础,已成为连接用户与服务的重要桥梁。特别是在社区管理领域,微信小程序以其独特的优势,为社区提供了一个全新的管理和服务模式。......
  • ROS基础入门——实操教程3C
    合集-Ubuntu强化学习合集(3)1.命令行gcc-v和g++-v输出版本不一致09-272.crypt.h:Nosuchfileordirectory报错处理09-283.ROS基础入门——实操教程10-04收起ROS基础入门——实操教程前言本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细......
  • Spring Boot框架下的大学生求职平台开发
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 大学生就业市场:Spring Boot招聘系统的创新
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 【Shiro】3.Springboot实现缓存
    最近已经快速入门了Shiro。对于登录、授权、认证等方法,每次都是从数据库直接查询。如果登录的人员过多,对数据库来说,是一项压力。如何减轻数据库的压力。EhCache实现缓存集成Redis实现Shiro缓存(推荐使用)在此之前,我们已经简单学会EhCache和Reids的使用。EhCache实现缓......
  • SpringMVC内容
    SpringMVC简介SpringMVC(Model View Controller)是以ServletAPI为基础的Web框架并可以部署到Servlet容器(比如:Tomcat),是控制层框架,主要负责与前端交互,接收前端的参数,在服务层进行交互,并把结果返回会前端页面。SpringMVC工作原理当发送请求的时候,DispatcherServlet(中调度......
  • uboot 启动自编写程序的方式
    uboot启动自编写程序的方式[怎么想写好这么难呢...]uboot存在boot命令。自己最初在尝试撰写串口程序时,选择了使用汇编来完成。在这段时间,自己使用go命令来尝试载入程序先是在Ubuntu上搭建tftp目录#/etc/default/tftpd-hpaTFTP_USERNAME="tftp"TFTP_DIRECTORY=......