SpringBoot使用Hibernate-validate
2021-06-07 03:03
标签:pos bootstra table which container ping content end not http://hibernate.org/validator/ Hibernate Validator allows to express and validate application constraints. The default metadata source are annotations, with the ability to override and extend through the use of XML. It is not tied to a specific application tier or programming model and is available for both server and client application programming. But a simple example says more than 1000 words: Hibernate Validator offers a configurable bootstrap API as well as a range of built-in constraints. The latter can easily be extended by creating custom constraints. Hibernate Validator gives access to constraint configuration via a metadata API facilitating, for example, tooling integration. Hibernate Validator 6.x is the reference implementation Bean Validation 2.0. Hibernate Validator offers additional value on top of the features required by Bean Validation. For example, a programmatic constraint configuration API as well as an annotation processor which plugs into the build process and raises compilation errors whenever constraint annotations are incorrectly used. As of now, you are probably aware of the Jakarta EE 9 effort that aims to provide new foundations for EE innovation. Jakarta EE 9 is... We just released Hibernate Validator 6.1.7.Final which contains some minor fixes. This is a recommended upgrade for everyone using Hibernate Validator and it is a drop-in... As of now, you are probably aware of the Jakarta EE 9 effort that aims to provide new foundations for EE innovation. Jakarta EE 9 is... We just released Hibernate Validator 6.1.6.Final which contains a few fixes and the new @Normalized constraint. This is a recommended upgrade for everyone using Hibernate Validator... We just released Hibernate Validator 6.1.5.Final which contains a fix for CVE-2020-10693 and a few other minor fixes. This is a recommended upgrade for everyone using... We just released Hibernate Validator 6.1.3.Final which contains some fixes for our translations and a performance improvement for validation of executables (i.e. methods and constructors). This... 在接口原有基础上添加注解 @Valid 或者 @Validated(spring 自带的,多了分组功能,其他请自行查资料) SpringBoot使用Hibernate-validate 标签:pos bootstra table which container ping content end not 原文地址:https://www.cnblogs.com/ios9/p/14591215.html
本篇文章SpringBoot使用Hibernate-validate以及一些常用的校验
官方Api 访问地址:
Application layer agnostic validation
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 2, max = 14)
private String licensePlate;
@Min(2)
private int seatCount;
// ...
}
Extendable
Rich metadata API
Reference implementation
Added value
Latest news
Hibernate Validator 6.2.0.Final and 7.0.0.Final released
2021-01-06
Hibernate Validator 6.1.7.Final and 6.0.22.Final released
2020-12-16
Hibernate Validator 6.2.0.CR1 and 7.0.0.CR1 released
2020-12-08
Hibernate Validator 6.1.6.Final and 6.0.21.Final released
2020-09-30
Hibernate Validator 6.1.5.Final and 6.0.20.Final released
2020-05-07
Hibernate Validator 6.1.3.Final and 6.0.19.Final released
2020-04-10
Maven依赖
SpringBoot2.3.x 以前 如果按照 SpringBoot 的方式引入了 spring-boot-starter-web,则不需要特意引入 spring-boot-starter-validation
SpringBoot2.3.x 以后需要显引入dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-validationartifactId>
dependency>
将参数接受实体DTO进行改造import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(description = "api模型")
@Data
public class TAccessApiListDTO implements Serializable {
@ApiModelProperty(name = "id",value = "主键id")
@NotNull(message="id不能为空")
private Integer id;
@ApiModelProperty(name = "apiname",value = "api名称")
@Length(max = 50)
@NotBlank(message = "接口名称不能为空")
private String apiname ;
@ApiModelProperty(name = "request_method",value = "请求方式:GET,POST")
@NotBlank(message = "请求方式不能为空")
private String request_method ;
@ApiModelProperty(name = "version",value = "api版本号")
@NotBlank(message = "版本号不能为空")
private String version ;
@ApiModelProperty(name = "apiparameter",value = "api参数")
private String apiparameter ;
@ApiModelProperty(name = "url",value = "url地址")
@NotBlank(message = "接口地址不能为空")
//@Pattern(regexp = "^((https|http)?:\\/\\/)[^\\s]+$",message = "请填写合法的URL")
private String url ;
}
接口改造@Api(description = "api管理模块")
@RestController
@RequestMapping("/apimanage")
public class ApimanageController {
@Autowired
private ApimanageService apimanageService;
@ApiOperation(value = "api修改")
@PostMapping("/update")
public JsonResult update(@RequestBody @Valid TAccessApiListDTO accessApiListDto){
apimanageService.updateTAccessApiList(accessApiListDto);
return JsonResult.successModelResult(null);
}
}
全局异常拦截处理
请在自己原有的全局异常拦截器中新增 MethodArgumentNotValidException 异常的处理@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public JsonResult validationError(MethodArgumentNotValidException ex) {
FieldError fieldError = ex.getBindingResult().getFieldError();
log.error(fieldError.getField()+fieldError.getDefaultMessage());
return JsonResult.BuildModelResult("9999",false, fieldError.getField()+fieldError.getDefaultMessage(),null);
}
}
到此 SpringBoot 使用 Hibernate-validate 校验,讲完了常用的校验
1. @NotBlank
适合字符串的非空校验
@NotBlank(message = "url不能为空")
2. @Pattern
使用正则表达式进行校验 例如URL的校验
@Pattern(regexp = "^((https|http)?:\\/\\/)[^\\s]+$",message = "请填写合法的URL")
3. @regexp
4. @NotNull
对象不能为 null
@NotNull(message="id不能为空")
5. @Length 字符串长度判断
@Length(min = 1,max = 500,message = "字符串长度必须在1-500之间")
6. @Size 判断集合的大小
@Size(min = 1,max = 100,message = "集合大小必须在1-100之间")
7. @Email 邮箱格式判断
@Email(message = "邮箱格式不正确")
文章标题:SpringBoot使用Hibernate-validate
文章链接:http://soscw.com/index.php/essay/91557.html