侧边栏壁纸
博主头像
实习两年半

基础不牢,地动山摇。

  • 累计撰写 43 篇文章
  • 累计创建 40 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

自定义注解Aop拦截处理

实习两年半
2023-05-15 / 0 评论 / 0 点赞 / 400 阅读 / 249 字
温馨提示:
本文最后更新于 2023-05-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

有时候我们在处理请求的时候会记录操作日期到数据库中,或者在对一些方法参数进行增强,比如查询条件时需要根据用户权限做一些限制等等。下面通过自定义注解去记录日志。

自定义一个注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLog {
    /**
     * 记录的操作名称
     */
    String value();

    /**
     * 是否记录请求参数
     */
    boolean logParam() default false;

}

定义切面类

@Component
@Aspect
@Slf4j
public class OperationLogAspect {



    @After("@annotation(operationLog)")
    public void getPointAcc1(JoinPoint joinPoint, OperationLog operationLog) {

        // 获取注解的属性值
        String value = operationLog.value();    // 记录的操作名称
        boolean logParam = operationLog.logParam(); // 是否记录请求参数

        // 自定义处理,可以在这里将操作保存



        log.info("方法:{},操作名称:{},是否记录返回值:{}",joinPoint.getSignature().getName(),value,logParam);

    }
}

使用注解


@RestController
@RequestMapping("demo")
public class DemoAopController {



    @GetMapping
    @OperationLog(value = "测试操作",logParam = true)
    public DemoApoReq demo(DemoApoReq demoApoReq){
        return demoApoReq;
    }

}

访问接口控制台输出

image-1684159962810

0

评论区