可以使用AopContext.currentProxy()获取到当前类的代理对象,然后再用代理对象进行调用本类中的方法
如下 f1 和f2 属于同一个类
public voidf1() {
((本类名)AopContext.currentProxy()).f2();
}
@Transactional
public f2() {
}
AopContext.currentProxy()方法的使用场景还包括:
- 在同一类的非切面方法中获取代理对象,确保切面可以正常生效。
- 在不同类中,非事务方法调用事务方法时,确保事务生效。
- 在同一个类中,事务方法调用非事务方法时,事务仍然具有传播性,确保事务生效。