首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring Boot三层架构开发模式

Spring Boot三层架构开发模式

原创
作者头像
艾伦耶格尔
发布2025-08-19 18:06:29
发布2025-08-19 18:06:29
1.3K0
举报
文章被收录于专栏:Java后端Java后端

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

一、传统业务逻辑方式

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

代码语言:java
复制
@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):

代码语言:java
复制
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
    //与数据库交互
}

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

2. 业务逻辑层 (Service):

代码语言:java
复制
@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):

代码语言:java
复制
@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 项目开发中常用的架构模式,它可以有效地提高代码的质量和可维护性。通过将代码逻辑分层,我们可以降低代码的耦合度,提高代码的可读性和可复用性,从而使我们的项目更加健壮和易于扩展。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、传统业务逻辑方式
  • 二、三层架构模式:分层解耦,各司其职
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档