Java目录结构案例如何规整

wen java案例 29

本文目录导读:

Java目录结构案例如何规整

  1. 标准Maven项目结构
  2. 包命名规范
  3. 资源配置规范
  4. 实际案例分析
  5. 最佳实践建议
  6. 工具配置示例

我来为你提供一个规范的Java目录结构案例,适用于不同规模的项目。

标准Maven项目结构

基础项目结构

project-name/
├── pom.xml                          # Maven配置文件
├── README.md                        # 项目说明文档
├── .gitignore                       # Git忽略文件
│
├── src/
│   ├── main/
│   │   ├── java/                    # Java源码
│   │   │   └── com/company/project/
│   │   │       ├── ProjectApplication.java        # 启动类
│   │   │       │
│   │   │       ├── config/                         # 配置类
│   │   │       │   ├── WebConfig.java
│   │   │       │   ├── SwaggerConfig.java
│   │   │       │   └── SecurityConfig.java
│   │   │       │
│   │   │       ├── controller/                     # 控制器层
│   │   │       │   ├── UserController.java
│   │   │       │   └── OrderController.java
│   │   │       │
│   │   │       ├── service/                        # 服务层
│   │   │       │   ├── UserService.java            # 接口
│   │   │       │   └── impl/
│   │   │       │       └── UserServiceImpl.java    # 实现类
│   │   │       │
│   │   │       ├── repository/                     # 数据访问层
│   │   │       │   ├── UserRepository.java
│   │   │       │   └── OrderRepository.java
│   │   │       │
│   │   │       ├── entity/                         # 实体类
│   │   │       │   ├── User.java
│   │   │       │   └── Order.java
│   │   │       │
│   │   │       ├── dto/                            # 数据传输对象
│   │   │       │   ├── UserDTO.java
│   │   │       │   └── UserCreateRequest.java
│   │   │       │
│   │   │       ├── vo/                             # 视图对象
│   │   │       │   ├── ResultVO.java
│   │   │       │   └── PageVO.java
│   │   │       │
│   │   │       ├── enums/                          # 枚举类
│   │   │       │   ├── UserStatusEnum.java
│   │   │       │   └── OrderStatusEnum.java
│   │   │       │
│   │   │       ├── exception/                      # 异常处理
│   │   │       │   ├── GlobalExceptionHandler.java
│   │   │       │   ├── BusinessException.java
│   │   │       │   └── ErrorCode.java
│   │   │       │
│   │   │       ├── utils/                          # 工具类
│   │   │       │   ├── StringUtils.java
│   │   │       │   └── DateUtils.java
│   │   │       │
│   │   │       └── constant/                       # 常量类
│   │   │           └── Constants.java
│   │   │
│   │   └── resources/                 # 资源文件
│   │       ├── application.yml                # 主配置
│   │       ├── application-dev.yml            # 开发环境
│   │       ├── application-prod.yml           # 生产环境
│   │       ├── mapper/                        # MyBatis映射文件
│   │       │   ├── UserMapper.xml
│   │       │   └── OrderMapper.xml
│   │       ├── static/                        # 静态资源
│   │       │   ├── css/
│   │       │   ├── js/
│   │       │   └── images/
│   │       └── templates/                     # 模板文件
│   │           └── index.html
│   │
│   └── test/
│       ├── java/                      # 测试代码
│       │   └── com/company/project/
│       │       ├── controller/
│       │       │   └── UserControllerTest.java
│       │       ├── service/
│       │       │   └── UserServiceTest.java
│       │       └── repository/
│       │           └── UserRepositoryTest.java
│       │
│       └── resources/                 # 测试资源
│           └── application-test.yml
│
├── docker/                           # Docker相关
│   ├── Dockerfile
│   └── docker-compose.yml
│
└── docs/                             # 文档
    ├── api/
    └── sql/

微服务项目结构

microservice-parent/
├── pom.xml                          # 父POM
├── .gitignore
│
├── common-parent/                   # 公共模块
│   ├── pom.xml
│   └── src/main/java/
│       └── com/company/common/
│           ├── base/               # 基础类
│           ├── utils/               # 工具类
│           └── exception/          # 异常定义
│
├── service-user/                    # 用户服务
│   ├── pom.xml
│   └── src/
│       ├── main/java/
│       │   └── com/company/user/
│       └── main/resources/
│           └── application.yml
│
├── service-order/                   # 订单服务
│   ├── pom.xml
│   └── src/
│       ├── main/java/
│       │   └── com/company/order/
│       └── main/resources/
│
├── service-gateway/                 # 网关服务
│   ├── pom.xml
│   └── src/
│
└── docs/
    └── architecture.md

包命名规范

层级划分

com.company.project
├── .controller          # 控制器
├── .service             # 服务接口
│   └── .impl           # 服务实现
├── .repository          # 数据访问(DAO)
├── .entity              # 实体/数据模型
├── .dto                 # 数据传输对象
├── .vo                  # 视图对象
├── .domain              # 领域模型
├── .config              # 配置类
├── .common              # 公共模块
├── .enums               # 枚举
├── .exception           # 异常
├── .utils               # 工具
└── .constant            # 常量

按功能划分(大型项目)

com.company.project
├── .module.user         # 用户模块
│   ├── .controller
│   ├── .service
│   ├── .entity
│   └── .dto
├── .module.order        # 订单模块
│   ├── .controller
│   ├── .service
│   ├── .entity
│   └── .dto
└── .common              # 公共模块
    ├── .utils
    └── .exception

资源配置规范

application.yml 示例

server:
  port: 8080
  servlet:
    context-path: /api
spring:
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://localhost:3306/db
    username: root
    password: 123456
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update
logging:
  level:
    com.company: DEBUG

多环境配置

resources/
├── application.yml              # 主配置
├── application-dev.yml          # 开发环境
├── application-test.yml         # 测试环境
├── application-prod.yml         # 生产环境
└── bootstrap.yml                # 启动配置(Spring Cloud)

实际案例分析

电商项目结构示例

ecommerce/
├── pom.xml
├── src/main/java/com/company/ecommerce/
│   ├── EcommerceApplication.java
│   │
│   ├── module/
│   │   ├── product/                 # 商品模块
│   │   │   ├── controller/
│   │   │   │   └── ProductController.java
│   │   │   ├── service/
│   │   │   │   ├── ProductService.java
│   │   │   │   └── impl/
│   │   │   │       └── ProductServiceImpl.java
│   │   │   ├── entity/
│   │   │   │   └── Product.java
│   │   │   ├── dto/
│   │   │   │   ├── ProductDTO.java
│   │   │   │   └── ProductQueryRequest.java
│   │   │   ├── repository/
│   │   │   │   └── ProductRepository.java
│   │   │   └── event/
│   │   │       └── ProductCreatedEvent.java
│   │   │
│   │   ├── order/                   # 订单模块
│   │   │   └── ...
│   │   │
│   │   └── payment/                 # 支付模块
│   │       └── ...
│   │
│   ├── common/                      # 公共模块
│   │   ├── constant/
│   │   │   └── ApiConstants.java
│   │   ├── exception/
│   │   │   ├── GlobalExceptionHandler.java
│   │   │   └── BusinessException.java
│   │   ├── utils/
│   │   │   ├── JsonUtils.java
│   │   │   └── ValidUtils.java
│   │   └── annotation/
│   │       └── RateLimiter.java
│   │
│   └── config/                      # 配置
│       ├── WebConfig.java
│       ├── SecurityConfig.java
│       └── RedisConfig.java
│
└── src/test/java/com/company/ecommerce/
    ├── module/
    │   └── product/
    │       ├── controller/
    │       └── service/
    └── common/
        └── utils/

最佳实践建议

命名规范

// ✅ 好的命名
com.company.project.controller.UserController
com.company.project.service.UserService
com.company.project.entity.User
// ❌ 差的命名
controller.UserController
service.UserServiceImpl
entity.UserEntity

文件命名示例

// 控制器
UserController.java          // 用户相关接口
OrderController.java         // 订单相关接口
// 服务
UserService.java             // 用户服务接口
UserServiceImpl.java         // 用户服务实现
UserQueryService.java        // 用户查询服务
// DTO
UserCreateDTO.java           // 创建用户请求
UserUpdateDTO.java           // 更新用户请求
UserResponseDTO.java         // 用户响应
// 实体
UserPO.java                  // 持久化对象
UserDO.java                  // 领域对象
UserVO.java                  // 值对象

目录深度建议

# ✅ 推荐的深度(2-3层)
com/company/project/controller/UserController.java
# ❌ 过深的目录
com/company/project/module/system/user/controller/UserController.java

资源文件组织

# 配置文件按环境分开
application-dev.yml
application-test.yml
application-prod.yml
# SQL文件按模块整理
sql/
├── init/
│   └── init.sql
├── migration/
│   ├── V1__create_users.sql
│   └── V2__add_orders.sql
└── seed/
    └── seed_data.sql

工具配置示例

.gitignore

# Java
*.class
*.jar
*.war
target/
!.mvn/wrapper/maven-wrapper.jar
# IDE
.idea/
*.iml
.vscode/
.settings/
.project
.classpath
# OS
.DS_Store
Thumbs.db
# Logs
logs/
*.log
# Env
.env
application-local.yml

遵循这些规范可以确保:

  • 可维护性:结构清晰,易于理解
  • 可扩展性:模块化设计,方便扩展
  • 团队协作:统一规范,减少沟通成本
  • 持续集成:标准结构,便于自动化构建

抱歉,评论功能暂时关闭!