原因:是我们在使用Before注解的时候,没有定义返回的参数,但是拦截的方法中缺需要传入一个参数,比如下面的“name”参数。如果Before注解拦截的方法需要接收参数,需要在Before中声明。
解决方法:
1. 去掉函数通知函数中的参数,
例如:
@Before("execution(* com.test.serivce..*.*(..))")public void before(String name) {
System.out.println("前置通知:"+name);
}
改为
@Before("execution(* com.test.serivce..*.*(..))")public void before() {
System.out.println("前置通知");
}
2 .加上args(name) 中间是before方法参数的名字
例如:
@Before("execution(* com.test.serivce..*.*(..))")
public void before(String name) {
System.out.println("前置通知:"+name);
}
改为
@Before("execution(* com.test.serivce..*.*(..))&& args(name)")
public void before(String name) {
System.out.println("前置通知:"+name);
}
参考:http://blog.csdn.net/wgw335363240/article/details/7191904