使用spring验证特殊字符来验证对象

时间:2018-11-29 18:37:23

标签: java spring spring-boot

我正在使用springboot REST API,并且请求中有一个对象,该对象包含约50个字段。如果任何字段具有无效的特殊字符,则要求我抛出无效的请求。通过在对象内部的字段上添加@Pattern批注以验证正则表达式,我能够使其工作。

我的问题是这些字段可能会增长,从长远来看,维护将是一个问题。有没有一种方法可以在对象本身上添加验证器,以便它可以验证该对象内的所有字段,而不是手动在该对象内的所有字段上添加它。例如,

@Pattern(regexp="^[a-zA-Z0-9\s]*$")
Object abcField = null

有没有更好的方法可以使它成为更通用的解决方案

1 个答案:

答案 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链接。

如果您还有其他问题,请随时提出:)