首页 > 其他分享 >自定义注解 + AOP切面 (切面不生效)

自定义注解 + AOP切面 (切面不生效)

时间:2022-12-29 20:56:01浏览次数:48  
标签:自定义 WorkersLog 切面 AOP 注解 save public

背景

业务开发,需要做一个操作日志,操作日志需要记录某一条数据在操作前后的值的变化记录,并写到操作记录表。
这种情况,使用自定义注解,加个切面,再合适不过了。
于是就开干。

代码部分

  • 先写一个切面
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WorkersLog {
}
  • 定义切面
@Aspect
@Component
@Slf4j
public class WorkersLogAspect {
    @Pointcut("@within(com.aaacarrot.demo.WorkersLog)")
    public void save() {
    }

    @Around("save()")
    public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        // 业务代码 省略
    }
}

问题

代码写好了,看起来也没啥问题,
但是!!
运行的时候,这个切面方法总是进不来。

为什么呢,

想来想去,也就只有一种可能了,这个切点写得不对。。

对比了一下之前的一种写法,发现了端倪:

把这个改一下就行了!!!
把 @within 改成 @annotation 就好了! emmmm,,,,,总的来说,对这个pointcut的使用不熟悉导致这次的问题。。

    @Pointcut("@annotation(com.aaacarrot.demo.WorkersLog)")
    public void save() {
    }

因为对切面参数不熟悉,导致的一次浪费时间的bug, 记录一下,。。

标签:自定义,WorkersLog,切面,AOP,注解,save,public
From: https://www.cnblogs.com/aaacarrot/p/17013510.html

相关文章

  • 自定义View,流式布局实践
     一、效果图: 二、FlowLayout实现packagecom.example.widgetsview;importandroid.content.Context;importandroid.content.res.Resources;importandroid.gr......
  • 【维生素C语言】第十二章 - C语言自定义类型讲解(联合体、枚举、联合体)
     原标题:自定义类型讲解?楼下保安大爷直呼内行!!【C语言】前言:本章将对C语言自定义类型进行讲解,前期我们讲过结构体,这章将会把前面结构体还没讲完的知识继续补充。一、结构体(st......
  • spring aop学习记录文档
    ProxyFactory:https://www.cnblogs.com/5207/p/6055152.htmlProxyConfig:https://www.cnblogs.com/mayang2465/p/12141814.htmlProxyFactory:https://juejin.cn/post/704079......
  • vue3+TS 自定义指令:长按触发绑定的函数
    vue3+TS自定义指令:长按触发绑定的函数而然间看到一个在vue2中写的长按触发事件的自定义指定,想着能不能把他copy到我的vue3项目中呢。编写自定义指令时遇到的几个难点1.......
  • windows 10 桌面ctrl alt 自定义快捷键打开程序慢 响应很慢 延迟问题
    思路为:关闭后台应用具体步骤如下:1.)设置,搜索 隐私  2.)找到隐私设置  3.)关闭后台这些后台应用,我都不需要,所以直接全部关闭了,如果有需要可以逐个实验,查找出来到底是哪个后......
  • WPF 自定义附加事件
    我们都知道路由事件,而附加事件用的比较少。但如果是通用的场景,类似附加属性,附加事件就很有必要的。举个例子,输入设备有很多种,WPF中输入事件主要分为鼠标、触摸、触笔:WPF......
  • 自定义view01 - 综述
    TypedArrayvaltypedArray:TypedArray=context.obtainStyledAttributes(attrs,R.styleable.EdgeTransparentView)position=typedArray.getI......
  • 自定义View03 - Canvas
    save/savelayerCanvas里面牵扯两种坐标系:Canvas自己的坐标系、绘图坐标系,当Canvas画布被创建时,Canvas的坐标系就被创建了,并且此坐标系是固定不变的,就是(0,0)到Canvas的宽高......
  • Python 自定义label clicked
    classMyQLabel(QtWidgets.QLabel):#自定义信号,注意信号必须为类属性clicked=QtCore.pyqtSignal()def__init__(self,parent=None):super......
  • Docker网络下-自定义网络实战
    通过前面两篇的学习,我们对docker网络及四大网络类型都了解了。本文,咱们就来学习docker的自定义网络。我们为什么需要自定义网络呢?是为了让各个主机分门别类,井井有条。方便......