我想绘制我的Map Order
为下游服务使用不同的DTO。它们接受相同的dto,但需要不同的字段。
例如,我的服务是a,我将发送 OutboundOrderDto
对于b和c,对于b, order.cart.shippingAddress
是强制性的,但对于c, order.cart.billingAddress
是强制性的。
如何使用springbootjsr303验证并为每个服务激活不同的规则,以便 sendOutbound(OutboundOrderDto dto)
,我只需要补充一下 @Validated
在arg之前捕获可能为空的字段错误并停止发送?
我现在看到的只是定义2个dto,但我认为可能有更简单的方法。
1条答案
按热度按时间nfeuvbwi1#
后来我发现可以使用验证组,如文档中所示:
https://beanvalidation.org/1.0/spec/#constraintdeclarationvalidationprocess-组序列
而且,正如@areus所建议的那样,根据https://reflectoring.io/bean-validation-with-spring-boot/#using-验证组对不同用例的对象进行不同的验证
引用:
小心使用验证组使用验证组很容易成为一种反模式,因为我们混合了关注点。对于验证组,被验证的实体必须知道它所使用的所有用例(组)的验证规则。在我关于bean验证反模式的文章中有更多关于这个主题的内容。