[已解决]Spring aop 使用@Aspect 提示 caused by: java.lang.IllegalArgumentException: error at ::0 can't find

12 篇文章 0 订阅
3 篇文章 0 订阅

问题描述:

今天使用spring AOP 实现日志拦截的时候,提示下面的报错:

caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut peforms
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:319)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression

 

问题解决:

找了很久都没有找到解决方法,已开始我以为是springframework版本和 aspectj版本不对应, 但是查找资料后,二者是没有对应关系的, 坑爹了!

于是查了很久的资料,解决方法一般是这2个:

 

1.JDK版本与 aspectj版本不对应,大部分资料都显示对应关系是:

如果要使用AspectJ完成注解切面需要注意下面的JDK与AspectJ的匹配:
JDK1.6 —— aspectJ1.6
JDK1.7 —— aspectJ1.7.3+

但是这个方法对我无效,试了很久都不行,  于是我就检查是不是pointCut定义有误。

 

2.检查切点表达式是否有误, 我是多了一个点

@Pointcut("execution(* com.xxx.xxx.xxx.xxxx.service.impl..*.*(..))")

改成@Pointcut("execution(* com.xxx.xxx.xxx.xxx.service.impl.*.*(..))")

检查spring xml 配置是否有加上自动代理 <aop:aspectj-autoproxy />

 

问题延伸:

spring aop 学习和实践,可以下面的这篇文章,挺详细的,aop 一共有4种实现方式。

1.经典的基于代理的AOP
2.@AspectJ注解驱动的切面
3.纯POJO切面(纯粹通过<aop:config>标签配置)
4.注入式AspectJ切面

我们这里用到的是第2种方法,其它实现方式,可以参考下面的文章:

 

 

往期精彩:

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值