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

相关推荐
爱跑步的程序员~6 分钟前
SpringBoot集成SpringAI与Ollama本地大模型
java·后端·spring·ai·llama·springai
Grandpa_Rick12 分钟前
Join Module: Iteration #6 Nested Join
java
Y‍waiX‍‍‮‪‎⁠‌‫‎‌‫‬17 分钟前
CentOS7安装多版本jdk并切换jdk版本
java·jdk·centos
疯狂敲代码的老刘20 分钟前
MyBatis Generator GUI 下载安装教程 可视化MyBatis代码生成
java·mybatis·mybatis-ui
追随者永远是胜利者37 分钟前
(LeetCode-Hot100)23. 合并 K 个升序链表
java·算法·leetcode·链表·go
Moshow郑锴1 小时前
Java SpringBoot 疑难 Bug 排查思路解析:从“语法正确”到“行为相符”
java·spring boot·bug
APIshop1 小时前
淘宝商品评论接口实战解析:从抓包到数据抓取全链路技术指南
java·python
百锦再1 小时前
线程安全的单例模式全方位解读:从原理到最佳实践
java·javascript·安全·spring·单例模式·kafka·tomcat
百锦再2 小时前
Java synchronized关键字详解:从入门到原理(两课时)
java·开发语言·struts·spring·kafka·tomcat·maven
油丶酸萝卜别吃2 小时前
什么是 Java 内存模型(JMM)?
java·开发语言