大概場景如下 , 使用this.調用本文件中的方法
@Override
public void giveProfit() {
this.profit(x, productInfo.getProfitRate());
}
@Transactional(rollbackFor = Exception.class)
public void profit() {
// sql.....
}
profit方法中的事務會失效, 原因:
AOP使用的是動態代理的機制,它會給類生成一個代理類,事務的相關操作都在代理類上完成。內部方式使用this調用方式時,使用的是實例調用,並沒有通過代理類調用方法,所以會導致事務失效。