Spring Boot 项目的默认推荐目录结构详解

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
  • 命名 :推荐命名为 ApplicationProjectNameApplication
  • 职责 :使用 @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.propertiesapplication.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 项目的默认推荐目录结构和规范。如果需要扩展功能,可以根据具体需求调整,但建议始终保持目录清晰和统一的命名风格。

相关推荐
sunnyday04261 分钟前
Spring Boot 应用启动成功后的事件监听与日志输出实践
java·spring boot·后端
予枫的编程笔记5 分钟前
【JDK版本】JDK版本迁移避坑指南:从8→17/21实操全解析
java·人工智能·jdk
独断万古他化5 分钟前
【MyBatis 深度解析】注解操作与 XML 配置:增删改查全流程实现
xml·java·spring·mybatis
西部风情5 分钟前
稳定性质量系列-系统稳定性建设实践
java·开发语言
短剑重铸之日6 分钟前
《7天学会Redis》Day 7 - Redisson 全览
java·数据库·redis·后端·缓存·redission
Qiuner7 分钟前
一文读懂 Lambda
java·spring boot·后端·架构
码界奇点8 分钟前
基于Spring+SpringMVC+MyBatis+easyUI的后台管理系统设计与实现
java·spring·毕业设计·mybatis·easyui·源代码管理
0和1的舞者9 分钟前
《#{} vs ${}:MyBatis 里这俩符号,藏着性能与安全的 “生死局”》
java·数据库·学习·mybatis·intellij idea·mybatis操作
步步为营DotNet12 分钟前
深度探究.NET中WeakReference:灵活内存管理的利器
java·jvm·.net
a程序小傲13 分钟前
中国邮政Java面试被问:Kafka的Log Compaction实现和删除策略
java·开发语言·后端·python·面试·职场和发展·kafka