我已閱讀春天的有關Spring註釋@Transactional(Propagation.REQUIRED)通過一個方法,它的行爲如何?
@Transactional(Propagation.REQUIRED)的官方文檔
註釋,但仍然有一些疑問。我會告訴你關於我是怎麼想的,它的行爲的例子:
首先服務
public class MyServiceImpl implements MyService{
@AutoWired
private OtherService otherService;
@Transactional(Propagation.REQUIRED)
public void saveItem(Item item){.....}
@Transactional(Propagation.REQUIRED)
public void updateItem(Item item){....}
}
@Transactional(Propagation.REQUIRED)
public void deleteItem(Item item){
otherService.checkItem(item);
...........
}
}
第二業務
public class OtherServiceImpl implements OtherService {
@Transactional(Propagation.REQUIRED)
public void checkItem(Item item){.....}
}
從Spring撥打電話到MyServiceImpl類控制器:
如果我打一個電話給
saveItem()
,會創建一個新的物理和邏輯事務,對吧?如果我從控制器向這個服務發出兩個調用,一個到
saveItem()
,而另一個到updateItem()
,Spring會爲每個方法創建兩個物理不同的事務,對不對?如果我做出
deleteItem()
一個電話,只將創建一個物理事務,因爲它會打開的時候deleteItem被稱爲交易,但此方法來otherService.checkItem()
內部通話將重用第一個實物交易,對不對?
是的,你是對的http://stackoverflow.com/questions/10740021/transactionalpropagation-propagation-required –