我正在使用基於註釋的聲明式方法來處理spring aop。 示例代碼交易的傳播行爲
ClassA{
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
add()
{
method1();
method2();
method3();
}
}
但我仍然懷疑在使用propagation.does的propagation.Requires_New意味着每個請求將開始新的事務。
第二個問題:
是否像方法2的任何方法的失敗,方法3將導致事務回滾?
如果有人能幫助我傾向交易傳播,我會非常高興。
有人可以爲我提供一個真實世界的例子,我們需要參與現有的事務。因爲我想象上面例子中使用的add函數將獨立於所有用戶,或者任何其他函數都將獨立於每個函數正在呼叫的用戶。我無法找到使用其他傳播行爲(如PROPAGATION_SUPPORTS,PROPAGATION_MANDATORY,PROPAGATION_REQUIRES_NEW等)的示例
謝謝@ sean,我仍然無法獲得其他傳播行爲,如PROPAGATION_SUPPORTS,PROPAGATION_MANDATORY,PROPAGATION_REQUIRES_NEW等等。請參考上面的整個問題 – Vish 2011-04-06 06:23:38
Thanks @ Sean.so如果多個請求都調用相同的方法說ADD(),REQUIRED註釋會使它們在同一個事務中運行??但我認爲所有的Add()方法調用都會在交易方面彼此獨立..仍然有點混亂 – Vish 2011-04-06 11:21:17
@Vish不,從不。新的請求總是意味着在新線程中新的方法調用,因此是新的事務。所有這些事務性的東西都發生在一個方法調用中,即最外面的一個。當外部方法調用內部事務方法時,會變得棘手,但調用外部方法兩次意味着兩個事務,無論它是否在Web上下文中。 – 2011-04-06 13:19:19