Spring Boot 项目的默认推荐目录结构是遵循 Maven 标准目录结构 和 Spring Boot 的最佳实践,旨在提高代码的可维护性和清晰度,同时便于扩展。以下是推荐的目录结构及其规范说明:
推荐目录结构
src
├── main
│ ├── java
│ │ └── com.example.project
│ │ ├── Application.java // 启动类
│ │ ├── controller // 控制器层 (Rest APIs)
│ │ ├── service // 服务层 (业务逻辑)
│ │ ├── repository // 数据访问层 (DAO/Repository)
│ │ ├── model // 实体类 (Model/POJO)
│ │ ├── config // 配置类 (例如 SecurityConfig)
│ │ ├── exception // 自定义异常处理
│ │ ├── util // 工具类
│ │ ├── dto // 数据传输对象 (DTO)
│ │ └── ... // 其他功能模块目录
│ ├── resources
│ │ ├── application.properties // 应用主配置文件
│ │ ├── application.yml // 应用主配置文件(可选)
│ │ ├── static // 静态资源 (HTML, JS, CSS)
│ │ ├── templates // 模板引擎文件 (如 Thymeleaf/Freemarker)
│ │ ├── i18n // 国际化资源文件
│ │ └── db // 数据库相关 (SQL 脚本)
│ │ ├── migration // 数据库迁移文件 (如 Flyway/Liquibase)
│ │ └── schema.sql
│ └── webapp // Web 应用文件(如 JSP 页面,通常少用)
├── test
│ ├── java
│ │ └── com.example.project
│ │ ├── controller // 控制器测试
│ │ ├── service // 服务层测试
│ │ ├── repository // 数据访问测试
│ │ └── ... // 其他模块测试
│ └── resources // 测试资源
├── pom.xml // Maven 配置文件
└── build.gradle // 如果使用 Gradle,则为构建脚本文件
规范说明
1. 启动类
- 位置 :启动类通常放在项目的根包路径下,如
com.example.project.Application.java
。 - 命名 :推荐命名为
Application
或ProjectNameApplication
。 - 职责 :使用
@SpringBootApplication
注解标注,作为项目的入口。
2. 分层结构
1. Controller(控制器层)
- 职责:处理 HTTP 请求,负责路由映射和响应。
- 命名规则 :通常以
*Controller
或*RestController
结尾。 - 注解 :使用
@RestController
或@Controller
。
2. Service(服务层)
- 职责:业务逻辑处理,尽量避免直接操作数据库。
- 命名规则 :以
*Service
结尾。 - 注解 :使用
@Service
。
3. Repository(数据访问层)
- 职责:与数据库交互,定义数据操作接口。
- 命名规则 :以
*Repository
或*Dao
结尾。 - 注解 :使用
@Repository
(可选,Spring Data JPA 会自动识别)。
4. Model(实体层)
- 职责:定义数据库表映射的实体类。
- 命名规则 :通常与数据库表名相关,如
User
对应users
表。 - 注解 :使用
@Entity
、@Table
和其他 JPA 注解。
5. DTO(数据传输对象)
- 职责:定义请求和响应的数据结构。
- 规范:DTO 与 Model 分离,便于接口版本化和解耦。
6. Util(工具类)
- 职责:存放公共的工具方法,如日期格式化、加密解密等。
- 命名规则 :以
*Util
或*Helper
结尾。
7. Config(配置类)
- 职责:存放 Spring 的 Java 配置类,如安全配置、数据源配置等。
- 命名规则 :以
*Config
结尾。
3. 资源文件
- 配置文件 :
application.properties
或application.yml
,建议使用yml
格式,便于层次化结构。 - 静态资源 :放在
static
目录下,Spring Boot 默认可以直接访问/static/**
。 - 模板文件 :放在
templates
目录下,支持 Thymeleaf、Freemarker 等模板引擎。 - 国际化资源 :放在
i18n
目录下,使用messages_xx.properties
命名方式。
4. 测试目录
- 测试类与主代码目录结构一致,便于查找和维护。
- 推荐使用 JUnit 5 和 Mockito 进行单元测试和集成测试。
5. 命名规范
- 包名 :全小写,遵循逆域名规则,如
com.example.project.module
。 - 类名:采用驼峰命名法,单词首字母大写。
- 方法名:小驼峰命名法,体现功能性,尽量语义化。
6. 其他建议
- 避免所有代码堆积在一个包中,按功能模块划分子包。
- 如果项目规模较大,可以进一步按业务模块划分子包结构。
以上是 Spring Boot 项目的默认推荐目录结构和规范。如果需要扩展功能,可以根据具体需求调整,但建议始终保持目录清晰和统一的命名风格。