有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 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的规定,应该谨慎使用分组

    引述:

    Careful with Validation Groups Using validation groups can easily become an anti-pattern since we're mixing concerns. With validation groups the validated entity has to know the validation rules for all the use cases (groups) it is used in. More on this topic in my article about Bean Validation anti-patterns.