我的spring-boot项目需要一个用户管理服务。我一般都了解春天使用DTO(数据传输对象)。但是当我考虑设计服务时,我只使用多个DTO作为一个“用户”模型,例如UserDTO,RegisterUserDTO,UpdateUserDTO,ManagedUserDTO .. UserDTO就像一个只读数据(输出数据包含用户名,电子邮件,名称)用于显示用户信息。但RegisterUserDTO就像一个输入数据(带有密码,confirmPassword为新用户创建密码),用于用户注册表单。 UpdateUserDTO适用于管理员,因为管理员可以分配权限,启用或禁用用户。
另一个原因可能是因为验证,因此可以在不同的DTO上应用不同的hibernate注释验证器。
我是否正确使用了大量的DTO?它应该像一个DTO一样使用多个弹簧验证器进行验证吗?
还有其他方法可以简化它吗?
答案 0 :(得分:4)
在我看来,有多个DTO是有效的,并导致更清晰的逻辑。
User
对象公开不同的相关信息UserDTO
包含与任何用户相关的一般信息,而RegisterUserDTO
可以继承UserDTO
,而无需重复UserDTO
和验证注释的属性。除此之外,您还可以使用Spring's conversion service在不同的DTO之间进行转换,并且此转换完全与核心业务逻辑分离。我认为这不是一个优势,但只要有很多像这样的DTO,转换服务就会减少痛苦。