让SpringBoot也用上Fluent Validator(springboot flume)

  本篇文章为你整理了让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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: