@NotEmpty、@NotBlank、@NotNull三种注解的区别
今天工作中犯了一个基础的错误,在判断字符串是否为空的状态的时候,使用了@NotEmpty
这个注解了。程序上抛出了异常信息。明明字符串内有值为啥会抛异常呢。后来检查原来是用错注解了,应该是用@NotBlank
这个注解。正好来说一下三者的区别吧。
区别:
-
@NotEmpty
用于检查字符串、集合、数组等是否为 null 或为空。如果参数为 null 或长度为 0,则校验失败。 -
@NotBlank
主要用于校验字符串是否不为空,且去除首尾空格后长度是否大于 0。与 @NotEmpty 类似,但 @NotBlank 只适用于字符串。如果参数为 null、空字符串或只包含空白字符,则校验失败。 -
@NotNull
用于检查对象是否为 null。它不关心对象的内容是什么,只要不是 null 就通过校验。
如果你使用@NotEmpty
注解来校验一个字符串,并且这个字符串是空的(即为 null 或长度为 0),那么在校验时会触发校验失败,可能会抛出验证异常。具体表现还是取决于你的代码如何处理这些验证异常。通常情况下,如果使用了 Java Bean Validation 框架(如 Hibernate Validator),在校验失败时会抛出 ConstraintViolationException 异常。你可以在代码中捕获这个异常并进行相应的处理,比如记录日志、返回错误信息给用户等。希望小伙伴不要犯我这种错误!