Files
skills/mis-spec/references/mvc_dir.md
T
V-LiuShuang 922b660ca6 add
2026-09-07 17:33:21 +08:00

5.6 KiB
Raw Blame History

目录结构说明

一个标准的MVC三层目录结构示例:

com/example/project/
│
├── controller/                    # 控制器层(接收请求)
│   ├── UserController.java
│   ├── ProductController.java
│   └── ...
│
├── service/                       # 业务逻辑层
│   ├── UserService.java           # 接口
│   ├── impl/                      # 实现类
│   │   └── UserServiceImpl.java
│   └── ...
│
├── mapper/                        # 数据访问层(MyBatis Mapper
│   ├── UserMapper.java
│   ├── ProductMapper.java
│   └── ...
│
├── domain/                        # 领域层(聚合所有数据对象)
│   ├── entity/                    # 实体类(与数据库表对应)
│   │   ├── User.java
│   │   ├── Product.java
│   │   └── ...
│   │
│   ├── dto/                       # 数据传输对象(输入参数)
│   │   ├── UserLoginDTO.java
│   │   ├── UserRegisterDTO.java
│   │   ├── ProductQueryDTO.java
│   │   └── ...
│   │
│   └── vo/                        # 视图对象(输出结果)
│       ├── UserVO.java
│       ├── ProductVO.java
│       ├── PageVO.java            # 分页结果封装
│       └── ...
│
├── config/                        # 配置类
│   ├── WebConfig.java
│   ├── DataSourceConfig.java
│   ├── SecurityConfig.java
│   └── ...
│
├── exception/                     # 异常处理
│   ├── GlobalExceptionHandler.java
│   ├── BusinessException.java
│   └── ...
│
├── interceptor/                   # 拦截器
│   ├── LoginInterceptor.java
│   ├── LogInterceptor.java
│   └── ...
│
├── aspect/                        # AOP切面(可选)
│   ├── LogAspect.java
│   └── ...
│
├── util/                          # 工具类
│   ├── JwtUtil.java
│   ├── DateUtil.java
│   └── ...
│
├── constant/                      # 常量类
│   ├── StatusCode.java
│   └── ...
│
├── enums/                         # 枚举类
│   ├── UserRoleEnum.java
│   ├── ResultCodeEnum.java
│   └── ...
│
└── Application.java               # 启动类

MVC各层职责说明

包名 职责 关键注解 典型类名示例
controller 接收HTTP请求,参数校验,调用Service层,返回VO给前端 @RestController
@RequestMapping
@Validated
UserController.java
ProductController.java
service 业务逻辑处理,事务管理,调用Mapper层,组装数据 @Service
@Transactional
UserService.java(接口)
UserServiceImpl.java(实现)
mapper 数据库CRUD操作,SQL映射,与数据库交互 @Mapper
@Repository
@Select/@Insert
UserMapper.java
ProductMapper.java
domain/entity 数据库表映射实体,与表结构一一对应 @TableNameMyBatis-Plus
@EntityJPA
@Id
@Column
User.java
Product.java
Order.java
domain/dto 接口输入参数对象,用于接收前端请求数据,可添加校验注解 @Data
@NotBlank/@NotNull等校验注解
UserLoginDTO.java
UserRegisterDTO.java
ProductQueryDTO.java
domain/vo 接口输出结果对象,用于返回前端展示数据,过滤敏感字段 @Data
无业务注解
UserVO.java
ProductVO.java
PageVO.java
config 配置类,用于配置数据源、拦截器、跨域、Swagger等 @Configuration
@Bean
@EnableWebMvc
WebConfig.java
DataSourceConfig.java
SecurityConfig.java
SwaggerConfig.java
exception 全局异常处理,自定义业务异常类 @ControllerAdvice
@ExceptionHandler
@ResponseBody
GlobalExceptionHandler.java
BusinessException.java
ParamException.java
interceptor 请求拦截器,用于登录验证、权限检查、日志记录、性能监控 @Component
实现 HandlerInterceptor
LoginInterceptor.java
LogInterceptor.java
AuthInterceptor.java
aspect AOP切面,用于日志记录、权限控制、性能统计、缓存处理 @Aspect
@Around
@Before
@After
LogAspect.java
PermissionAspect.java
TimeAspect.java
util 通用工具类,提供各种辅助方法 无注解 JwtUtil.java
DateUtil.java
PasswordUtil.java
FileUtil.java
constant 常量定义,统一管理常量值 无注解 StatusCode.java
RedisKey.java
Constant.java
enums 枚举类型定义,管理固定状态码、类型等 @Enum UserRoleEnum.java
ResultCodeEnum.java
OrderStatusEnum.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