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

相关推荐
专注API从业者37 分钟前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
摇滚侠1 小时前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql
keep one's resolveY1 小时前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
天空属于哈夫克32 小时前
企业微信API常见的错误和解决方案
java·数据库·企业微信
摇滚侠3 小时前
VMvare 虚拟机 Oracle19c 安装步骤,远程连接 Oracle19c,百度网盘安装包
java·oracle
梁萌3 小时前
idea报错找不到XX包的解决方法
java·intellij-idea·启动报错·缺少包
Agent产品评测局3 小时前
生产排期与MES/ERP系统打通,实操方法详解 —— 2026企业级智能体自动化选型与实战指南
java·运维·人工智能·ai·chatgpt·自动化
阿丰资源3 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
呱牛do it3 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 8)
java
消失的旧时光-19434 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解