Spring Boot 3 项目的整体架构。
1. IDEA创建项目
<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 的数据传输安全性和简洁性。
上图