在我的理解中,newPrint
方法在下面的代碼中應該創建一個新的事務,但顯然它會打印出與oldPrint
方法中使用的相同的事務狀態對象。我從另一個班級打電話給老朋友。是否因爲使用this
來調用newPrint?如果是,那麼何時會創建新的交易?如果我從另一個班級調用兩種方法,則無論如何將創建兩個單獨的事務,因爲在班級級別使用@Transactional
。Spring Propagation.REQUIRES_NEW
@Transactional
public class Unsubcriber {
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void newPrint() {
System.out.println(TransactionAspectSupport.currentTransactionStatus());
}
public void oldPrint() {
System.out.println(TransactionAspectSupport.currentTransactionStatus());
newPrint();
}
輸出:
o[email protected]3bacd0e7
o[email protected]3bacd0e7
會是什麼情景時Propagation.REQUIRES_NEW
會的工作?
裏面oldPrint,你的意思'('的newPrint),而不是'打印()'? – geoand
@geoand我的壞,只是編輯我的問題。謝謝! – Abidi
檢查我的答案:) – geoand