Spring Boot3项目的常见通用整体架构

Spring Boot 3 项目的整体架构。

1. IDEA创建项目

xml 复制代码
<properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2. 基本项目结构

Spring Boot 项目通常遵循约定优于配置的原则,标准结构如下:

复制代码
├── src/main/java
│   └── com.example.project
│       ├── config          # 配置类
│       ├── controller      # 控制器类,处理HTTP请求
│       ├── service         # 服务层,包含业务逻辑
│       ├── repository      # 数据访问层,通常使用 Spring Data JPA 或 MyBatis
│       ├── model           # 实体类,通常对应数据库表
│       ├── dto             # 数据传输对象,用于封装请求和响应数据
│       ├── exception       # 自定义异常类
│       ├── util            # 工具类
│       └── Application.java# 主应用类,包含 main 方法
├── src/main/resources
│   ├── application.yml     # Spring Boot 配置文件
│   ├── static              # 静态资源,如 HTML、CSS、JS 文件
│   └── templates           # 模板文件(如 Thymeleaf 模板)
└── src/test/java           # 测试代码

3. 分层架构

  • Controller 层 :
    • 处理 HTTP 请求,解析请求参数,调用服务层,并返回响应数据。
    • 使用注解 @RestController@Controller
  • Service 层 :
    • 包含业务逻辑,通常与一个或多个 Repository 交互。
    • 使用注解 @Service
  • Repository 层 :
    • 负责数据的持久化操作,通常使用 Spring Data JPA 或 MyBatis 实现。
    • 使用注解 @Repository
  • Model 层 :
    • 定义领域对象或实体类,通常对应数据库表。
  • DTO(Data Transfer Object)层 :
    • 用于封装请求和响应的数据,确保 API 的数据传输安全性和简洁性。

上图

相关推荐
codeGoogle3 小时前
自研 IM 还是选择第三方 SDK?企业开发者应该如何权衡?
前端·后端·程序员
IT小白杨3 小时前
防关联用指纹浏览器还是虚拟机好?2026年技术架构深度对比与选型决策
chrome·经验分享·microsoft·架构·安全架构·指纹浏览器
DLYSB_5 小时前
API 网关流量洪峰与突发 CC 攻击:我用 Go 写了个“现场物理防御哨兵”,把故障响应压缩到秒级
开发语言·后端·golang·报警灯
markinmarkin6 小时前
Spring 中Bean 的作用域有哪些?
java·后端·spring
橙子家6 小时前
使用方法 ToDictionary() 来优化查询时间复杂度:O(N*M) -> O(1*M)【C# 基础】
后端
IT_陈寒7 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
用户8356290780517 小时前
Python Word 转 PDF 和 PDF 转 Word 指南
后端·python
用户8356290780517 小时前
如何使用 Python 加密和保护 Word 文档
后端·python
工业设备方案笔记7 小时前
RK3588 vs RK3568:AI边缘计算项目到底应该如何选择芯片平台?
arm开发·人工智能·目标跟踪·架构·边缘计算
他们叫我秃子8 小时前
前端开发转 Go 全栈(五):终于遇到熟人了,Go 的闭包和高阶函数原来这么像 JavaScript
前端·后端·go