DTO设计原则总结
DTO设计原则总结
单一职责:每个DTO只负责一个特定场景的数据传输
最小暴露:只包含必要的字段,隐藏敏感信息
无业务逻辑:DTO应只包含数据,不包含业务逻辑
数据验证:在DTO中添加验证注解,尽早拦截无效数据
文档清晰:使用Swagger等工具提供清晰的API文档
版本控制:为API变更设计合理的版本控制策略
性能考虑:避免在DTO中包含大对象或循环引用
通过合理使用DTO,可以构建出安全、灵活、易于维护的API接口,同时保证系统各层之间的解耦和清晰边界。
com.example.demo/
├── DemoApplication.java // 项目入口类(主程序)
├── config/ // 配置类目录
│ ├── SwaggerConfig.java // Swagger文档配置
│ ├── MyBatisConfig.java // MyBatis配置(如使用)
│ └── WebConfig.java // Web相关配置(如拦截器、过滤器)
├── controller/ // 控制器目录(处理HTTP请求)
│ ├── UserController.java // 用户相关接口
│ └── OrderController.java // 订单相关接口
├── service/ // 服务层目录(业务逻辑)
│ ├── UserService.java // 用户服务接口
│ ├── impl/ // 服务实现类
│ │ └── UserServiceImpl.java // 用户服务实现
│ ├── OrderService.java // 订单服务接口
│ └── impl/
│ └── OrderServiceImpl.java // 订单服务实现
├── repository/ 或 mapper/ // 数据访问层
│ ├── UserRepository.java // Spring Data JPA仓库接口
│ └── UserMapper.java // MyBatis映射接口(如使用)
├── entity/ 或 model/ // 实体类目录(与数据库表对应)
│ ├── User.java // 用户实体
│ └── Order.java // 订单实体
├── dto/ // 数据传输对象(用于接口输入输出)
│ ├── request/ // 请求DTO
│ │ └── UserRequest.java // 用户请求参数
│ └── response/ // 响应DTO
│ └── UserResponse.java // 用户响应结果
├── exception/ // 异常处理相关
│ ├── GlobalExceptionHandler.java // 全局异常处理器
│ ├── BusinessException.java // 业务异常类
│ └── ErrorCode.java // 错误码定义
├── util/ // 工具类目录
│ ├── DateUtils.java // 日期工具类
│ └── SecurityUtils.java // 安全相关工具类
├── constant/ // 常量定义目录
│ └── SystemConstant.java // 系统常量
├── aspect/ // AOP切面目录
│ └── LogAspect.java // 日志切面
└── vo/ // 视图对象(如用于页面展示)
└── UserVO.java // 用户视图对象
其他目录(根据项目需求):
- listener/:监听器类
- scheduler/:定时任务类
- filter/:过滤器类
- interceptor/:拦截器类
- validator/:自定义校验器
本作品采用《CC 协议》,转载必须注明作者和本文链接
很好