1、java.lang.IllegalArgumentException: warning no match for this type name:com.learn.spring
切入点表达式错误:
原:execution(public * com.learn.spring.*(*))
修改后:execution(public * com.learn.spring.*.*(*))
不添加后边一个*,就可能报上面的异常。
2、java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
切入点参数配置有问题,没配置或配错
原:
@Pointcut(value="args(int)")public void argsTest(int p){}@After(value="argsTest(p)",argNames="p")public void afterTest(JoinPoint jp,int p){System.out.println(p);System.out.println("args");}
修改后:
@Pointcut(value="args(p)")public void argsTest(int p){}@After(value="argsTest(p)",argNames="p")public void afterTest(JoinPoint jp,int p){System.out.println(p);System.out.println("args");}
带参数时args表达式的添写方法argsTest()中的参数名,本例中为p。不填写参数类型。
3、各通知类型执行顺序
同一个类: Around的前通知-->Before通知-->Around的后通知-->After通知-->AfterReturn通知(或AfterThrowing通知)