java出站DTO验证:在Spring Boot中选择激活不同的验证模式/规则
我想将我的Order
映射到不同的DTO,以供下游服务使用。它们接受相同的DTO,但需要不同的字段
例如,我的服务是A,我将OutboundOrderDto
发送给B和C,对于B,order.cart.shippingAddress
是必需的,但是对于C,则order.cart.billingAddress
是必需的
如何使用Spring Boot JSR 303验证并为每个服务激活不同的规则,以便在方法sendOutbound(OutboundOrderDto dto)
中,我只需要在arg之前添加@Validated
,以捕获可能为空的字段错误并停止发送
我现在看到的只是定义2个DTO,但我认为可能有更简单的方法
# 1 楼答案
后来我发现可以使用验证组,如文档中所示:
https://beanvalidation.org/1.0/spec/#constraintdeclarationvalidationprocess-groupsequence
而且,正如@areus所建议的,按照https://reflectoring.io/bean-validation-with-spring-boot/#using-validation-groups-to-validate-objects-differently-for-different-use-cases的规定,应该谨慎使用分组
引述: