今天翻看公司之前代码时,无意中看到了如下一段代码:
(UserService)AopContext.currentProxy()).getWechatInfo()
心里在想,好好的方法为啥不通过this.getWechatInfo()调用,而是通过AopContext.currentProxy()这个aop方式调用,于是乎一顿查找,并了解到:当在Service中定义了一个方法并且切入之后,从Controller里面调用该方法可以实现切入,但是当在同一个Service中实现另一方法并调用改方法时却无法切入。
然后写了个例子亲测如下:
@Service
public class GreetingServiceImpl implements GreetingService {
@Override public void sayMessage(String message) {
System.out.println("GreetingService.sayMessage " + message);
this.sayHello();//调用同个service下的方法
}
@Override
public void sayHello() {
System.out.println("GreetingService.sayHello()");
}
}
@RequestMapping(value = "hello")
@ResponseBody
publi