当前位置: 首页 > ops >正文

Java Spring Boot项目目录规范示例

以下是一个典型的 Java Spring Boot 项目目录结构规范示例,结合了分层架构和模块化设计的最佳实践:

text

复制

下载

src/
├── main/
│   ├── java/
│   │   └── com/
│   │       └── example/
│   │           └── myapp/
│   │               ├── MyAppApplication.java          # 主启动类
│   │               │
│   │               ├── config/                        # 配置类
│   │               │   ├── SwaggerConfig.java         # Swagger 配置
│   │               │   ├── SecurityConfig.java        # 安全配置
│   │               │   └── WebMvcConfig.java          # MVC 配置
│   │               │
│   │               ├── controller/                   # 控制器层
│   │               │   ├── UserController.java
│   │               │   └── ProductController.java
│   │               │
│   │               ├── service/                      # 服务层
│   │               │   ├── UserService.java
│   │               │   ├── impl/                     # 服务实现
│   │               │   │   ├── UserServiceImpl.java
│   │               │   │   └── ProductServiceImpl.java
│   │               │
│   │               ├── repository/                   # 数据访问层
│   │               │   ├── UserRepository.java       # JPA 接口
│   │               │   └── ProductRepository.java
│   │               │
│   │               ├── model/                        # 数据模型
│   │               │   ├── entity/                   # 数据库实体
│   │               │   │   ├── User.java
│   │               │   │   └── Product.java
│   │               │   │
│   │               │   ├── dto/                      # DTO 对象
│   │               │   │   ├── request/              # 请求对象
│   │               │   │   │   ├── CreateUserRequest.java
│   │               │   │   │   └── UpdateProductRequest.java
│   │               │   │   └── response/            # 响应对象
│   │               │   │
│   │               │   └── enums/                   # 枚举类
│   │               │
│   │               ├── exception/                    # 异常处理
│   │               │   ├── GlobalExceptionHandler.java
│   │               │   └── CustomException.java
│   │               │
│   │               ├── util/                         # 工具类
│   │               │   ├── DateUtils.java
│   │               │   └── StringUtils.java
│   │               │
│   │               ├── security/                     # 安全模块
│   │               │   ├── JwtUtils.java
│   │               │   └── UserDetailsServiceImpl.java
│   │               │
│   │               └── scheduler/                    # 定时任务
│   │                   └── ReportGenerationScheduler.java
│   │
│   └── resources/
│       ├── static/                                   # 静态资源
│       ├── templates/                               # 模板文件
│       ├── application.yml                          # 主配置文件
│       ├── application-dev.yml                      # 开发环境配置
│       ├── application-prod.yml                     # 生产环境配置
│       └── db/
│           ├── migration/                           # 数据库迁移脚本(Flyway/Liquibase)
│           │   └── V1__init_schema.sql
│           └── data.sql                             # 初始数据
│
└── test/                                            # 测试代码└── java/└── com/└── example/└── myapp/├── controller/│   └── UserControllerTest.java├── service/│   └── UserServiceTest.java└── integration/                # 集成测试└── UserIntegrationTest.java

核心目录说明:

  1. 主启动类

    • 位于根包下,用于启动 Spring Boot 应用

  2. 分层结构

    • controller: 处理 HTTP 请求,调用 Service 层

    • service: 业务逻辑层,接口与实现分离

    • repository: 数据访问层(JPA/Hibernate)

    • model: 数据模型定义(DTO/Entity)

  3. 配置类

    • 集中管理 Spring 配置(安全、Swagger、数据库等)

  4. 异常处理

    • 统一异常处理和自定义异常定义

  5. 资源文件

    • application-*.yml: 多环境配置文件

    • db/migration/: 数据库迁移脚本(推荐使用 Flyway)

  6. 测试目录

    • 分层测试结构(单元测试/集成测试)

最佳实践建议:

  1. 包命名规范

    • 使用全小写字母,避免使用下划线

    • 按功能模块分包(如:com.example.myapp.order

  2. 代码分离原则

    • Controller 保持简洁(仅处理参数校验和响应封装)

    • 业务逻辑集中在 Service 层

    • 数据访问逻辑在 Repository 层

  3. DTO 使用规范

    • 使用单独的 DTO 进行接口数据传输

    • 避免直接暴露 Entity 对象给前端

  4. 版本控制

    • 数据库迁移脚本使用版本号管理

    • API 版本控制(如:/api/v1/users

  5. 测试规范

    • 测试类命名:被测试类名 + Test 后缀

    • 使用 @SpringBootTest 进行集成测试

    • 使用 @Mock 和 @InjectMocks 进行单元测试

根据项目复杂度可适当调整结构,例如增加以下目录:

  • aspects/: AOP 切面

  • client/: 外部服务调用客户端

  • messaging/: 消息处理(Kafka/RabbitMQ)

  • validation/: 自定义校验逻辑

http://www.xdnf.cn/news/5668.html

相关文章:

  • 【Python训练营打卡】day23 @浙大疏锦行
  • 基于Backtrader库的实时回测与模拟交易策略实战
  • day06_java中的流程控制语句
  • Milvus 2.4 使用详解:从零构建向量数据库并实现搜索功能(Python 实战)
  • 力扣-138.随机链表的复制
  • js fetch流式请求 AI动态生成文本,实现逐字生成渲染效果
  • 个人博客系统测试报告
  • 常用激活函数总结
  • websocketpp 安装及使用
  • 基于OpenCV的人脸识别:Haar级联分类器
  • SATA—Link层状态机
  • Gmssl库的aes算法效率问题
  • 家具制造行业的现状 质检LIMS如何赋能家具制造企业质检升级
  • 见多识广7:KAIST(韩国高等科学技术院)——关注AI加速器方向
  • 复盘与导出工具最新版V23.0版本更新--新增韭菜异动轮动功能
  • 基于 Python 的后端开发学习路线
  • 【AI】mcp server是什么玩意儿
  • 【Linux网络】 HTTP cookie与session
  • DeepPrep:深度学习提升神经影像预处理
  • LeetCode算法题:电话号码的字母组合
  • Bodhi linux 系统详解
  • 分析红黑树工程实用的特点
  • 智能手表测试计划文档(软/硬件)
  • 读取.ini后缀类型的马达配置文件并进行赋值
  • AtCoder Beginner Contest 405(ABCD)
  • 搭建高可用及负载均衡的Redis
  • C++四种类型转换:static_cast、 dynamic_cast const cast、 reinterpret_cast
  • 详解RabbitMQ工作模式之通配符模式
  • 3.9/Q2,GBD数据库最新文章解读
  • 珠海金山2007逆向分析挑战赛-CrackMe看雪(九连环)(writeup)