3.7 KiB
3.7 KiB
目录结构说明
一个标准的MVC三层目录结构示例:
com/example/project/
│
├── controller/ # 控制器层(接收请求)
│ ├── UserController.java
│ └── ...
│
├── service/ # 业务逻辑层
│ ├── UserService.java # 接口
│ ├── impl/ # 实现类
│ │ └── UserServiceImpl.java
│ └── ...
│
├── mapper/ # 数据访问层(MyBatis Mapper)
│ ├── ProductMapper.java
│ └── ...
│
├── domain/ # 领域层(聚合所有数据对象)
│ ├── entity/ # 实体类(与数据库表对应)
│ │ ├── Product.java
│ │ └── ...
│ │
│ ├── dto/ # 数据传输对象(输入参数)
│ │ ├── ProductQueryDTO.java
│ │ └── ...
│ │
│ └── vo/ # 视图对象(输出结果)
│ ├── UserVO.java
│ ├── ProductVO.java
│ ├── PageVO.java # 分页结果封装
│ └── ...
│
├── config/ # 配置类
│ ├── DataSourceConfig.java
│ └── ...
│
├── utils/ # 工具类
│ ├── DateUtil.java
│ └── ...
│
├── constants/ # 常量类
│ ├── StatusCode.java
│ └── ...
│
├── enums/ # 枚举类
│ ├── ResultCodeEnum.java
│ └── ...
│
└── Application.java # 启动类
MVC各层职责说明
| 包名 | 职责 | 关键注解 | 典型类名示例 |
|---|---|---|---|
| controller | 接收HTTP请求,参数校验,调用Service层,返回VO给前端 | @RestController@RequestMapping@Validated |
UserController.java |
| service | 业务逻辑处理,事务管理,调用Mapper层,组装数据 | @Service@Transactional |
UserService.java(接口)UserServiceImpl.java(实现) |
| mapper | 数据库CRUD操作,SQL映射,与数据库交互 | @Mapper@Repository |
UserMapper.java |
| domain/entity | 数据库表映射实体,与表结构一一对应 | @TableName(MyBatis-Plus) |
User.java |
| domain/dto | 接口输入参数对象,用于接收前端请求数据,可添加校验注解 | @Data@NotBlank/@NotNull等校验注解 |
ProductQueryDTO.java |
| domain/vo | 接口输出结果对象,用于返回前端展示数据,过滤敏感字段 | @Data无业务注解 |
ProductVO.java |
| config | 配置类 | @Configuration@Bean |
DataSourceConfig.java |
| utils | 通用工具类,提供各种辅助方法 | 无注解 | DateUtil.java |
| constants | 常量定义,统一管理常量值 | 无注解 | Constants.java |
| enums | 枚举类型定义,管理固定状态码、类型等 | @Enum |
ResultCodeEnum.java |
| Application | 项目启动类,Spring Boot应用入口 | @SpringBootApplication@MapperScan |
Application.java |
各层调用关系图
flowchart LR
subgraph 调用链
Controller -->|依赖调用| Service
Service -->|依赖调用| Mapper
Mapper -->|依赖调用| Database
end
subgraph 数据对象
DTO[DTO<br/>输入参数]
VO[VO<br/>输出结果]
Entity[Entity<br/>实体对象]
end
Controller -.->|接收| DTO
Controller -.->|返回| VO
Service -.->|转换| Entity
Mapper -.->|操作| Entity