我正在使用springboot REST API,并且请求中有一个对象,该对象包含约50个字段。如果任何字段具有无效的特殊字符,则要求我抛出无效的请求。通过在对象内部的字段上添加@Pattern批注以验证正则表达式,我能够使其工作。
我的问题是这些字段可能会增长,从长远来看,维护将是一个问题。有没有一种方法可以在对象本身上添加验证器,以便它可以验证该对象内的所有字段,而不是手动在该对象内的所有字段上添加它。例如,
@Pattern(regexp="^[a-zA-Z0-9\s]*$")
Object abcField = null
有没有更好的方法可以使它成为更通用的解决方案
答案 0 :(得分:1)
在创建对象之前,有很多方法可以验证参数。我将介绍其中的三个:
1-第一种也是最简单的方法是实现一个ObjectValidator
类,该类负责验证参数。显然,您应该以这种方式手动调用验证器。
2-我在项目中很少使用的下一种方法是验证constructor
中的对象。如果参数的值无效,则可以引发异常。
3-在这种情况下,实现自定义注释是我最喜欢的解决方案。您可以实现自己的注释并将其放在数据类之上。 您需要使用以下依赖项:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
您的验证器类也应实现ConstraintValidator
接口。
有关实现自己的自定义annotation
的更多信息,请阅读this链接。
如果您还有其他问题,请随时提出:)