zoukankan      html  css  js  c++  java
  • spring controller全局校验(JSR-303)、异常拦截AOP

    package dhht.seal.extension.config;

    import dhht.seal.extension.vo.ResultVO;
    import lombok.extern.slf4j.Slf4j;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.Signature;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.ObjectError;

    import java.util.List;

    /**
    * @Author: sh
    * @Description:
    * @Version:
    * @Date: 2020/4/4
    */
    @Slf4j
    @Component
    @Aspect
    public class ControllerResultAop {
       // 此包及其子包下的所有以Controller名称结尾的类下的所有方法
    @Pointcut("execution(* dhht.seal.extension.miniprogram..*Controller.*(..))")
    public void controllerPointCut() {
    }

    @Around(value = "controllerPointCut()")
    public Object around(ProceedingJoinPoint joinPoint) {
    BindingResult bindingResult = null;
    try {
    Object[] args = joinPoint.getArgs();
    if (null != args && args.length > 0) {
    for (Object arg : args) {
    if (arg instanceof BindingResult) {
    bindingResult = (BindingResult) arg;
    break;
    }
    }
    }
    if (bindingResult != null) {
    List<ObjectError> errors = bindingResult.getAllErrors();
    if (errors.size() > 0) {
    for (ObjectError error : errors) {
    return ResultVO.fail(error.getDefaultMessage(),null);
    }
    }
    }
    return joinPoint.proceed();
    } catch (Throwable throwable) {
    String className = joinPoint.getTarget().getClass().getName();
    Signature signature = joinPoint.getSignature();
    String methodName = signature.getName();
    return ResultVO.fail(className+methodName+"执行失败",null);
    }
    }
    }
  • 相关阅读:
    p4841 城市规划
    p2619 [国家集训队2]Tree I [wqs二分学习]
    p3723 [AH2017/HNOI2017]礼物
    p5437 【XR-2】约定
    p5349 幂
    数据结构:结构之美
    你所不知道的传输层
    为什么选择这种技术而不选择另一种技术?
    Internet路由-主机路由表和转发表
    计算机网络----数据链路层(三)
  • 原文地址:https://www.cnblogs.com/sung1024/p/12631153.html
Copyright © 2011-2022 走看看