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

相关推荐
学长毕设6 分钟前
基于SpringBoot的建筑材料管理系统-附源码
java·spring boot·后端
摸爬滚打的小李29 分钟前
关于 Arthas
java·后端
砚底藏山河43 分钟前
python量化实操:冷热分层存储
java·开发语言·python·金融
yuniko-n1 小时前
【JUC】原子类
java
惊讶的猫1 小时前
Query 改写
java·rag
信誓旦旦的程序猿1 小时前
【Python量化实战宝典 #18】MACD 金叉死叉手册:DIF、DEA、柱体全拆解(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
Misnearch2 小时前
第7章 面向对象技术
java·开发语言·软考
weixin_BYSJ19872 小时前
电竞先锋网站---附源码02032
java·vue.js·spring boot·python·django·tomcat·php
会编程的吕洞宾2 小时前
LangChain4j 流式输出实战:让 AI 回复像打字机一样逐字显示
java·开发语言·人工智能·后端
只是学习学习2 小时前
Java将文件转二维码导出MP4
java