spring事務的傳播

帶著故事去流浪發表於2020-11-17
/**
 * 事務傳播 - Propagation
 *      REQUIRED: 使用當前的事務,如果當前沒有事務,則自己新建一個事務,子方法是必須執行在一個事務中的;
 *                如果當前存在事務,則加入這個事務,成為一個整體。
 *                舉例:領導沒飯吃,我有錢,我會自己買了自己吃;領導有的吃,會分給你一起吃。
 *      SUPPORTS: 如果當前有事務,則使用事務;如果當前沒有事務,則不使用事務。
 *                舉例:領導沒飯吃,我也沒飯吃;領導有飯吃,我也有飯吃。
 *      MANDATORY: 該傳播屬性強制必須存在一個事務,如果不存在,則丟擲異常
 *                 舉例:領導必須管飯,不管飯沒飯吃,我就不樂意了,就不幹了(丟擲異常)
 *      REQUIRES_NEW: 如果當前有事務,則掛起該事務,並且自己建立一個新的事務給自己使用;
 *                    如果當前沒有事務,則同 REQUIRED
 *                    舉例:領導有飯吃,我偏不要,我自己買了自己吃
 *      NOT_SUPPORTED: 如果當前有事務,則把事務掛起,自己不適用事務去執行資料庫操作
 *                     舉例:領導有飯吃,分一點給你,我太忙了,放一邊,我不吃
 *      NEVER: 如果當前有事務存在,則丟擲異常
 *             舉例:領導有飯給你吃,我不想吃,我熱愛工作,我丟擲異常
 *      NESTED: 如果當前有事務,則開啟子事務(巢狀事務),巢狀事務是獨立提交或者回滾;
 *              如果當前沒有事務,則同 REQUIRED。
 *              但是如果主事務提交,則會攜帶子事務一起提交。
 *              如果主事務回滾,則子事務會一起回滾。相反,子事務異常,則父事務可以回滾或不回滾。
 *              舉例:領導決策不對,老闆怪罪,領導帶著小弟一同受罪。小弟出了差錯,領導可以推卸責任。
 */

相關文章