[英]The order of validation in Spring Boot object field properties
假设我有一个 class,SpringBoot class object 中的验证顺序是什么。 在创建 object 之后,填充字段或在填充对象之前进行验证,在设置字段值时进行此验证。 或者在创建 object 之后,通过 get 调用我们验证 object 字段值。
package com.bablo.google.request;
import java.io.Serializable;
import java.util.Set;
import javax.validation.constraints.NotNull;
public class SomeRequest implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@NotNull
private Long userId;
private String resNote; //this is not annotated with @NotNull
@NotNull
private String revTag;
public Long getUserId() {
return userId;
}
public void setUserId(final Long userId) {
this.userId = userId;
}
public String getResNote() {
return responseNote;
}
public void setResNote(final String resNote) {
this.resNote = resNote.trim(); //Call to trim() method of the String object.
}
public String getRevTag() {
return revTag;
}
public void setRevTag(final String revTag) {
this.revTag = revTag.trim(); //Call to the trim() method of the String object.
}
}
class 中的验证方式是什么? 验证字段的机制是什么,@NotNull 验证或任何验证是否依赖于 getter 方法来进行验证? 他们是否首先调用 setter 方法进行验证?
拆分您的问题并添加答案。
SpringBoot class object 中的验证顺序是什么?
验证作为数据绑定过程的一部分发生。 每个请求参数/路径变量都将根据标记的注释进行验证,只有当验证通过时,该值才会分配给 class object。
class 中的验证方式是什么?
每种绑定机制的验证过程都不同。 如果方法参数是 ModelAttribute/请求参数/路径变量/Map 等。Spring 对每个方法参数使用不同的参数解析器。 如果添加了@Valid,那么它会在参数解析过程中启用验证(注意整个魔术连接的 RequestMappingHandlerAdapter)。
@NotNull 验证或任何验证是否依赖于 getter 方法来进行验证? 他们是否首先调用 setter 方法进行验证?
Spring 使用反射构造/验证方法参数 class。 即使没有 getter/setter,数据绑定和验证也会发生。
您可以通过调用手动验证
@Autowired
private javax.validation.Validator validator;
...
validator.validate(new SomeRequest()); // you can also pass method's argument
或者您可以使用自动验证
@Valid
+ @ExceptionHandler 的示例https://www.baeldung.com/spring-boot-bean-validation@Valid
+ BindingResult
的示例https: //spring.io/guides/gs/validating-form-input/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.