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

相关推荐
JH30737 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble9 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟9 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖9 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_124987075310 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_10 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.10 小时前
Day06——权限认证-项目集成
java
瑶山11 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy11 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法