java - Spring Boot 对象字段属性中的验证顺序
问题描述
假设我有一个类,SpringBoot 类对象中的验证顺序是什么。创建对象后,填充字段或在填充对象之前进行验证,在设置字段值时进行此验证。或者在创建对象之后,通过 get 调用我们验证对象字段值。
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.
}
}
验证将在课堂上发生的方式是什么?验证字段的机制是什么,@NotNull 验证或任何验证是否依赖于 getter 方法来进行验证?他们是否首先调用 setter 方法进行验证?
解决方案
拆分您的问题并添加答案。
SpringBoot 类对象中的验证顺序是什么?
验证作为数据绑定过程的一部分发生。每个请求参数/路径变量都将根据标记的注释进行验证,并且只有当验证通过时,才会将值分配给类对象。验证将在课堂上发生的方式是什么?
每种绑定机制的验证过程都不同。如果方法参数是 ModelAttribute/request parameter/path variable/Map 等。Spring 对每个方法参数使用不同的参数解析器。如果添加了@Valid,那么它会在参数解析过程中启用验证(注意整个魔术连接的 RequestMappingHandlerAdapter)。@NotNull 验证或任何验证是否依赖于 getter 方法来进行验证?他们是否首先调用 setter 方法进行验证?
Spring 使用反射来构造/验证方法参数类。即使没有 getter/setter,数据绑定和验证也会发生。
推荐阅读
- c# - Microsoft excel Evaluate 函数返回代码错误 (-2146826273)
- magento - Magento Rest API - 空白 sku 问题
- windows - 在 XAMPP 中使用 PHP 版本切换器时将 Xdebug 设置为 PHP8
- php - 一旦用户登录输入错误的凭据 PHP PDO 就无法显示警报
- python - 为什么我不能使用 groupby?问题出在哪里?
- python - 如何遍历 CSV 文件 URL 调用 PYTHON
- java - 为什么我必须写两次才能在 Arraylist 中添加输入?
- caching - 如何减少对服务器端认证授权平台的访问
- python-3.x - 我如何获得成员在 discord.py 中输入的命令
- regex - 如何在飞镖中用骆驼案来判案