關於同一個service中事務方法的相互調用



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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM