@valid注解_springboot使用自定义注解对接口参数校验
目的:
對自定義注解有更好的認(rèn)識,讓參數(shù)校驗(yàn)變得更加簡潔、靈活、方便。
正文:
首先,在pom文件引入hibernate的校驗(yàn)依賴
1.自定注解:(注意要加@Constraint約束)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {ValidatorParamEntity.class})
public @interface ValidParamEntity {
boolean required() default true;
String message() default "只能為大小寫字母";
}
@Component
public class ValidatorParamEntity implements ConstraintValidator {
private static Pattern pattern = Pattern.compile("[a-zA-Z]+");
boolean isRequired;
@Override
public void initialize(ValidParamEntity constraintAnnotation) {
isRequired=constraintAnnotation.required();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if(isRequired)
{
if(StringUtils.isEmpty(value))
{
return false;
}
Matcher matcher = pattern.matcher(value);
return matcher.matches();
}
return true;
}
}
2.參數(shù)引用校驗(yàn)注解
@Data
public class ParamEntity implements Serializable {
@ValidParamEntity
String name;
@NotNull
Integer id;
}
3.接口加參數(shù)前加@Valid
@PostMapping("/visit")
public ResultVo visit(@Valid @RequestBody ParamEntity param)
{
return ResultVo.success();
}
4.對綁定異常做統(tǒng)一全局處理
@RestControllerAdvice
public class GloableException {
@ExceptionHandler(value = Exception.class)
public ResultVo exceptionHandler(Exception e) {
e.printStackTrace();
if (e instanceof ValidationException) {
BindException ex = (ValidationException) e;
List errors = ex.getAllErrors();
ObjectError error = errors.get(0);
String msg = error.getDefaultMessage();
return ResultVo.bindError(msg);
}
return ResultVo.error();
}
}
5.測試
總結(jié)
以上是生活随笔為你收集整理的@valid注解_springboot使用自定义注解对接口参数校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 官方版下载_药店大学app官方版下载
- 下一篇: mysql cluster_redisl