本篇文章为你整理了让SpringBoot也用上Fluent Validator(springboot flume)的详细内容,包含有flowable springboot springboot flume spring boot flutter springboot validation 让SpringBoot也用上Fluent Validator,希望能帮助你了解 让SpringBoot也用上Fluent Validator。
在使用SpringBoot的时候经常需要对客户端传入的参数进行合法性的校验,校验的方法基本上都是使用SpringBoot提供的注解,有时候遇上注解不能满足需求的时候还需要在业务逻辑上进行判断。这样根本就没有实现解耦。
项目maven引入
dependency
groupId com.github.mvallim /groupId
artifactId java-fluent-validator /artifactId
version 1.10.0 /version
/dependency
声明实体校验器
package com.a.b.aspect;
import br.com.fluentvalidator.AbstractValidator;
import com.a.b.LoginDto;
import java.util.function.Predicate;
import static br.com.fluentvalidator.predicate.CollectionPredicate.empty;
import static br.com.fluentvalidator.predicate.CollectionPredicate.hasSize;
public class LoginDtoValidator extends AbstractValidator LoginDto {
// 支持注入
@Autowired
TestService testService;
@Override
public void rules() {
setPropertyOnContext("loginDto");
ruleFor(LoginDto::getUsername)
.must(s - s.equals("admin"))
.withMessage("哈哈,错了")
// 当发生错误则阻止继续校验
.critical()
.must(s- s.equals(getPropertyOnContext("password",String.class)))
.withMessage("密码和账号必须要一样的");
配置切入点
package com.a.b.aspect;
import br.com.fluentvalidator.context.Error;
import br.com.fluentvalidator.context.ValidationResult;
import com.a.b.LoginDto;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Component
@Aspect
@Slf4j
public class TestAspect {
@Before("execution(* com.a.b.*.controller.*.*(..)) ")
public void doBefore(JoinPoint joinPoint){
Object arg = joinPoint.getArgs()[0];
ValidationResult validate = new LoginDtoValidator().validate((LoginDto) arg);
// 获取校验结果
log.debug("validate {}",validate.isValid());
StringBuilder stringBuilder = new StringBuilder();
// 打印并拼接错误信息
for (Error error : validate.getErrors()) {
log.debug("error {}",error);
stringBuilder.append(error.getMessage()).append("\n");
throw new Exception(stringBuilder.toString());
项目地址
AOP
以上就是让SpringBoot也用上Fluent Validator(springboot flume)的详细内容,想要了解更多 让SpringBoot也用上Fluent Validator的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。