+-
java-Spring验证:多个DTO与具有多个验证器的单个DTO
我的 spring-boot项目需要一个用户管理服务.我通常会在春季了解DTO(数据传输对象)的用法.但是,当我考虑设计服务时,我仅对一个“用户”模型使用多个DTO,例如UserDTO,RegisterUserDTO,UpdateUserDTO,ManagedUserDTO.UserDTO就像只读数据(带有用户名,电子邮件,姓名的输出数据)用于显示用户信息.但是RegisterUserDTO就像输入数据(使用密码,confirmPassword为新用户创建密码)一样,用于用户注册表单. UpdateUserDTO用于管理员,因为管理员可以分配权限,启用或禁用用户.

另一个原因可能是由于验证,因此可以将不同的休眠注释验证器应用于不同的DTO.

我使用很多DTO是否正确?通过使用多个弹簧验证器进行验证是否像一个DTO?

还有其他选择可以简化它吗?

最佳答案
我认为拥有多个DTO是有效的,并且会导致逻辑更加清晰.

>具有不同的DTO可以在不同情况下为同一User对象公开不同和相关的信息
>您不必在验证中处理一个“大类”,因为验证逻辑在不同情况下是不同的.如果所有内容都在一个类中,那么您将很难,特别是在验证方面,因为某些字段不必在给定的上下文中进行验证.另一方面,这可能导致暴露一些值,例如,如果不小心,则不应暴露这些值.密码等
>尽可能使用继承.例如,您提到的UserDTO包含与任何用户有关的常规信息,并且RegisterUserDTO可以继承UserDTO,而不必重复UserDTO和验证批注的属性.

除此之外,您还可以使用Spring’s conversion service在不同的DTO之间进行转换,并且此转换与核心业务逻辑完全脱钩.我认为这不是优点,但是只要有许多这样的DTO,转换服务就可以减轻痛苦.

点击查看更多相关文章

转载注明原文:java-Spring验证:多个DTO与具有多个验证器的单个DTO - 乐贴网