本文目录导读:

我来为你提供一个规范的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
遵循这些规范可以确保:
- 可维护性:结构清晰,易于理解
- 可扩展性:模块化设计,方便扩展
- 团队协作:统一规范,减少沟通成本
- 持续集成:标准结构,便于自动化构建
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播