Spring MVC中Controller、Service、Repository层返回对象该如何命名
Spring MVC 分层对象命名规范参考
核心分层对象命名约定
- Repository层:和数据表结构一一映射的持久化对象统一使用
XxxEntity格式命名,例如用户表对应UserEntity。该类对象仅在Repository层内部使用、或作为Repository层的返回值传递给Service层,不允许透出到更上层。 - Service层:裁剪Entity字段、聚合多Entity数据、承载业务逻辑的传输对象,统一使用
XxxDTO(Data Transfer Object,数据传输对象)格式命名,例如用户业务传输对象命名为UserDTO。该类对象是Service层对外输出的标准模型,仅包含当前业务场景所需的字段,不绑定底层表结构。 - Controller层:适配不同端、不同业务场景展示需求的视图对象,统一使用
XxxVO(View Object,视图对象)格式命名,可根据场景补充后缀区分,例如PC端用户视图对象命名为UserPcVO、移动端用户视图对象命名为UserMobileVO、用户列表视图对象命名为UserListVO。该类对象完全匹配前端展示要求,是Controller层返回给前端的最终模型。
配套使用规范
- 严格遵守层间对象边界,禁止Entity直接透出到Controller层返回给前端,也禁止VO对象传入Service层参与业务逻辑处理,避免层间耦合。
- 遵循单场景专用原则,不要为了复用强行将多个不相关业务场景的字段合并到同一个DTO/VO中,避免对象冗余、后续维护混乱。
- 对象转换逻辑分层放置:Entity转DTO的逻辑放在Service层内部实现,DTO转VO的逻辑放在Controller层内部实现,不要跨层编写转换代码。
内容的提问来源于stack exchange,提问作者Michele
相关产品推荐
相关产品推荐

