情況1:接口方法沒有添加 @Transactional 註解,事務不會開啓,如果該方法體內調用其他有事務的方法時,且調用方法爲this.Method 時,那麼被調用的方法即使添加了 @Transactional 註解 也不會有事務產生(如調用方法1)。
情況2:接口方法沒有添加 @Transactional 註解,但是使用service.Method() 調用其他有事務的接口方法,那麼被調用的方法會產生事務(如調用方法2)。
調用方法1:
pubilc serviceImpl (){
@Overide
pubilc void add(){
add-sql;
this.B();
}
調用方法2:
pubilc serviceImpl (){
@Overide
pubilc void add(){
add-sql;
service.B();
}
@Overide@Transaction
public void update(){
update-sql;
throw new RuntimeException();
}
}