public interface AService {
public void a();
public void b();
}
@Service()
public class AServiceImpl implements AService{
@Transactional(propagation = Propagation.REQUIRED)
public void a() {
this.b();
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void b() {
}
}
因為Service實現了個接口,使用代理時走的是動態代理,因此 a() 方法執行的時候使用的時Service類的代理對象,
而this.b()使用的是未代理類AServiceImpl 的b方法,b方法是沒有使用AOP的。
先說解決方法:
this.b();-----------修改為--------->((AService) AopContext.currentProxy()).b();