本文目录导读:

我来为你提供一个规范的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
遵循这些规范可以确保:
- 可维护性:结构清晰,易于理解
- 可扩展性:模块化设计,方便扩展
- 团队协作:统一规范,减少沟通成本
- 持续集成:标准结构,便于自动化构建