This commit is contained in:
V-LiuShuang
2026-09-07 17:32:16 +08:00
parent 34b18df044
commit a96372fc4d
2 changed files with 121 additions and 1 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ description: 在mis编写代码的必备技能。
# mis-spec
请结合[核心技术栈](./references/core_arch.md),并严格遵守[代码编写规范](./references/coding_rules.md)生成代码,被要求编写HTTP接口文档时,请参考[api-doc.md](./examples//api-doc.md)文档生成。
请结合[核心技术栈](./references/core_arch.md)、[MVC通用目录结构](./references/mvc_dir.md),并严格遵守[代码编写规范](./references/coding_rules.md)生成代码,被要求编写HTTP接口文档时,请参考[api-doc.md](./examples//api-doc.md)文档生成。
## 示例代码
+120
View File
@@ -0,0 +1,120 @@
# 目录结构说明
一个标准的MVC三层目录结构示例:
```text
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 # 启动类
```
## 各层职责说明
## 📋 Spring MVC 各层职责说明
| 包名 | 职责 | 关键注解 | 典型类名示例 |
|------|------|----------|-------------|
| **controller** | 接收HTTP请求,参数校验,调用Service层,返回VO给前端 | `@RestController`<br>`@RequestMapping`<br>`@Validated` | `UserController.java`<br>`ProductController.java` |
| **service** | 业务逻辑处理,事务管理,调用Mapper层,组装数据 | `@Service`<br>`@Transactional` | `UserService.java`(接口)<br>`UserServiceImpl.java`(实现) |
| **mapper** | 数据库CRUD操作,SQL映射,与数据库交互 | `@Mapper`<br>`@Repository`<br>`@Select`/`@Insert`等 | `UserMapper.java`<br>`ProductMapper.java` |
| **domain/entity** | 数据库表映射实体,与表结构一一对应 | `@TableName`MyBatis-Plus<br>`@Entity`JPA<br>`@Id`<br>`@Column` | `User.java`<br>`Product.java`<br>`Order.java` |
| **domain/dto** | 接口输入参数对象,用于接收前端请求数据,可添加校验注解 | `@Data`<br>`@NotBlank`/`@NotNull`等校验注解 | `UserLoginDTO.java`<br>`UserRegisterDTO.java`<br>`ProductQueryDTO.java` |
| **domain/vo** | 接口输出结果对象,用于返回前端展示数据,过滤敏感字段 | `@Data`<br>无业务注解 | `UserVO.java`<br>`ProductVO.java`<br>`PageVO.java` |
| **config** | 配置类,用于配置数据源、拦截器、跨域、Swagger等 | `@Configuration`<br>`@Bean`<br>`@EnableWebMvc` | `WebConfig.java`<br>`DataSourceConfig.java`<br>`SecurityConfig.java`<br>`SwaggerConfig.java` |
| **exception** | 全局异常处理,自定义业务异常类 | `@ControllerAdvice`<br>`@ExceptionHandler`<br>`@ResponseBody` | `GlobalExceptionHandler.java`<br>`BusinessException.java`<br>`ParamException.java` |
| **interceptor** | 请求拦截器,用于登录验证、权限检查、日志记录、性能监控 | `@Component`<br>实现 `HandlerInterceptor` | `LoginInterceptor.java`<br>`LogInterceptor.java`<br>`AuthInterceptor.java` |
| **aspect** | AOP切面,用于日志记录、权限控制、性能统计、缓存处理 | `@Aspect`<br>`@Around`<br>`@Before`<br>`@After` | `LogAspect.java`<br>`PermissionAspect.java`<br>`TimeAspect.java` |
| **util** | 通用工具类,提供各种辅助方法 | 无注解 | `JwtUtil.java`<br>`DateUtil.java`<br>`PasswordUtil.java`<br>`FileUtil.java` |
| **constant** | 常量定义,统一管理常量值 | 无注解 | `StatusCode.java`<br>`RedisKey.java`<br>`Constant.java` |
| **enums** | 枚举类型定义,管理固定状态码、类型等 | `@Enum` | `UserRoleEnum.java`<br>`ResultCodeEnum.java`<br>`OrderStatusEnum.java` |
| **Application** | 项目启动类,Spring Boot应用入口 | `@SpringBootApplication`<br>`@MapperScan` | `Application.java` |
## 各层调用关系图
```mermaid
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
```