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

背景

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

代码部分

  • 先写一个切面
@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, 记录一下,。。

posted @ 2022-12-29 20:42  aaacarrot  阅读(1649)  评论(0编辑  收藏  举报