自定义注解 + 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 @   aaacarrot  阅读(1867)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示