美文网首页
SpringBoot AOP 自定义日志拦截注解

SpringBoot AOP 自定义日志拦截注解

作者: 赛亚人之神 | 来源:发表于2018-09-20 14:49 被阅读128次

    切面

    @Slf4j
    @Configuration
    @Aspect
    public class OpsLogAspect {
    
      @Pointcut(value = "@annotation(com.magic.platform.core.anotation.OpsLog)")
      public void opsLogAnnotation() {}
    
    
      @AfterReturning(pointcut = "opsLogAnnotation()", returning = "object")
      public void doAfterReturning(JoinPoint joinPoint, Object object) {
    
        // 获取方法的签名
        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
    
        Method method = methodSignature.getMethod();
        OpsLog opsLog = method.getAnnotation(OpsLog.class);
    
        String value = opsLog.value();
    
        OpsLogType[] opsLogTypes = opsLog.type();
        String opsLogTypeName = null;
        if (opsLogTypes.length > 0) {
          opsLogTypeName = opsLogTypes[0].name();
        }
        log.warn("执行的操作:{}, 类型:{}", value, opsLogTypeName);
    
      }
    }
    

    日志注解

    @Documented // 定义注解的保留策略
    @Inherited //说明子类可以继承父类中的该注解
    @Retention(value = RetentionPolicy.RUNTIME) // 定义注解的保留策略
    @Target(value = {ElementType.METHOD}) // 定义注解的作用目标
    public @interface OpsLog {
    
      String value() default "";
      OpsLogType[] type() default {};
    }
    

    操作类型

    public enum OpsLogType {
      /**
       * 添加
       */
      ADD,
    
      /**
       * 修改
       */
      UPDATE,
    
      /**
       * 删除
       */
      DELETE,
    
      /**
       * 查询
       */
      SELECT,
    
      /**
       * 设置
       */
      SET,
    
      /**
       * 重置
       */
      RESET,
    
      /**
       * 停用
       */
      STOP,
    
      /**
       * 上传
       */
      UPLOAD,
    
      /**
       * 下载
       */
      DOWNLOAD;
    }
    

    相关文章

      网友评论

          本文标题:SpringBoot AOP 自定义日志拦截注解

          本文链接:https://www.haomeiwen.com/subject/hzqnnftx.html