源本科技 | 码上会

Spring Boot 分层架构

2026/03/24
16
0

学习目标

  • 理解 Spring Boot 的四层架构模型及其各自的核心职责。

  • 掌握各层级中常用的注解(如 @RestController, @Service, @Repository)及其作用。

  • 理清请求在 Spring Boot 应用中的完整流转过程,从客户端发起到数据库交互再返回响应。

  • 了解如何利用 Spring Boot Actuator 进行生产环境的监控与健康检查。


引言

Spring Boot 是构建在 Spring Framework 之上的一个框架,旨在通过提供自动配置、嵌入式服务器和生产就绪功能来简化应用程序开发。其架构设计的核心目标是减少样板代码,使开发人员能够更轻松地构建独立、可扩展且易于维护的 Java 应用程序。

为了达成这一目标,Spring Boot 采用了一种清晰的分层架构模式。这种模式不仅符合软件工程的高内聚低耦合原则,也极大地提升了代码的可读性和可测试性。


架构分层

Spring Boot 应用程序通常由以下四个逻辑层级组成,每一层都有明确的职责边界。

表现层

表现层,通常也被称为控制器层(Controller Layer),是 Spring Boot 应用程序的入口点。它的主要职责是处理所有传入的 HTTP 请求,并将适当的响应发送回客户端。

核心职责:

  • 处理标准的 HTTP 方法,包括 GET, POST, PUT, DELETE 等。

  • 通过控制器暴露 RESTful API 接口。

  • 执行请求参数的校验工作。

  • 管理认证的入口点(例如登录请求的接收)。

  • 负责 Java 对象与 JSON 格式之间的相互转换(序列化与反序列化)。

  • 将经过校验的请求转发给业务层进行进一步处理。

常用组件与注解:

  • @RestController / @Controller:定义控制类。

  • @RequestMapping, @GetMapping, @PostMapping:映射具体的 HTTP 请求路径和方法。

  • @RequestBody:将请求体绑定到方法参数。

  • @PathVariable:提取 URL 路径中的变量。

业务层

业务层,亦称为服务层(Service Layer),包含了应用程序的核心业务逻辑。它在表现层和持久层之间扮演着中介者的角色,确保业务规则的正确执行。

核心职责:

  • 实现具体的业务规则和工作流程。

  • 对数据进行复杂的处理和二次校验。

  • 处理认证和授权逻辑(如需,通常结合 Spring Security 使用)。

  • 通过 @Transactional 注解管理数据库事务,确保数据的一致性。

  • 与持久层通信,以检索或存储数据。

常用组件与注解:

  • @Service:标识服务类,便于依赖注入。

  • @Transactional:声明式事务管理,确保操作原子性。

持久层

持久层负责与数据库进行交互以及处理数据访问逻辑。它将底层的数据库操作细节对应用程序的其他部分进行抽象,使得上层业务无需关心具体的数据库实现。

核心职责:

  • 利用 ORM(对象关系映射)框架将 Java 对象映射到数据库表。

  • 执行标准的 CRUD(创建、读取、更新、删除)操作。

  • 管理数据库层面的事务细节。

  • 支持关系型数据库和 NoSQL 数据库的接入。

常用技术与组件:

  • 核心技术:Spring Data JPA, Hibernate, R2DBC(用于响应式应用)。

  • 常用注解与接口

    • @Repository:标识数据访问对象(DAO)。

    • JpaRepository, CrudRepository:提供开箱即用的数据访问方法。

    • @Entity, @Id, @Table:定义实体类与数据库表的映射关系。

数据库层

数据库层包含实际存储应用程序数据的数据库系统。根据业务需求的不同,它可以支持多种类型的存储方案。

支持的数据库类型:

  • 关系型数据库:如 MySQL, PostgreSQL, Oracle, SQL Server。

  • NoSQL 数据库:如 MongoDB, Cassandra, DynamoDB, Firebase。

  • 云原生数据库:专为高可扩展性设计的云端数据库服务。


请求流转架构

理解数据如何在各层之间流动对于掌握 Spring Boot 至关重要。以下是一个典型请求的处理流程:

  1. 客户端发起请求:前端应用或 API 消费者向应用程序发送 HTTP 请求(如 GET, POST 等)。

  2. 控制器层接收:请求首先到达控制器层(Controller Layer),该层根据请求的 URL 和方法将其映射到特定的处理函数。

  3. 业务逻辑处理:控制器调用服务层(Service Layer)。服务层执行核心业务逻辑,并在需要时与持久层通信以获取或修改数据。

  4. 数据持久化交互:持久层(Persistence Layer)通过 Spring Data JPA 或 R2DBC 与数据库层交互。这通常通过一个继承自 JpaRepositoryCrudRepository 的仓库类(Repository Class)来实现。

  5. 响应返回:处理完成后,数据逐层返回,最终由控制器层转换为 JSON 格式并作为 HTTP 响应发送回客户端。

  6. 监控与运维:在整个过程中,Spring Boot Actuator 可用于实时监控应用状态和执行健康检查。


生产级监控

Spring Boot 提供了 Spring Boot Actuator 模块,它为应用程序添加了一系列生产就绪的功能,帮助开发者在应用上线后更好地进行运维和管理。

Actuator 的核心功能:

  • 健康检查 (Health Checks):快速判断应用及其依赖(如数据库、消息队列)是否正常运行。

  • 应用指标 (Application Metrics):收集内存使用、垃圾回收、HTTP 请求计数等关键性能指标。

  • 环境详情 (Environment Details):查看当前的配置属性、系统环境变量等。

  • 线程与内存监控:实时分析线程堆栈和内存占用情况。

  • 自定义管理端点:允许开发者暴露特定的业务管理接口。

通过 Actuator,运维团队可以实时监控应用程序的健康状况和性能表现,从而快速定位并解决潜在问题。