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通知)