注意點(diǎn):
1.數(shù)據(jù)庫(kù)是否為InnoDB引擎
2.配置文件中是否開(kāi)啟
transaction:
? rollback-on-commit-failure: true
3.是否在啟動(dòng)類(lèi)中加入注解
@EnableTransactionManagement
4.測(cè)試問(wèn)題:
@Transactional注解必須和拋出異常的位置在一起
在Service中加入的事務(wù)注解,手動(dòng)拋出異常時(shí)要在Service中拋出,才能看到效果
如果想在Controller中死遭,調(diào)用兩個(gè)不同Service的方法早直,開(kāi)啟事務(wù)回滾烹看,則需要在Controller也加入@Transactional注解
5.@Transactional注解默認(rèn)只能攔截RuntimeException和Error咨跌,如果自定義的Exception庆锦,需要如下設(shè)置
@Transactional(rollbackFor = Exception.class)
6.在同一個(gè)service中 方法調(diào)用會(huì)使事務(wù),aop失效?
7.@Transactional注解的方法是否為public丐重。
8.@Transactional所注解的方法所在的類(lèi)腔召,是否已經(jīng)使用了注解@Service或@Component等。
@Transactional(noRollbackFor=Exception.class)
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) //使被調(diào)用者不受調(diào)用者的異常影響,出現(xiàn)異常之后,使父方法回滾,子方法不回滾
@Transactional(rollbackFor = Exception.class,propagation = Propagation.SUPPORTS):支持當(dāng)前事務(wù)扮惦,如果當(dāng)前沒(méi)有事務(wù)臀蛛,就以非事務(wù)方式執(zhí)行。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED):如果當(dāng)前沒(méi)有事務(wù)崖蜜,就新建一個(gè)事務(wù)浊仆,如果已經(jīng)存在一個(gè)事務(wù)中,加入到這個(gè)事務(wù)中豫领。(默認(rèn))抡柿。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.MANDATORY):使用當(dāng)前的事務(wù),如果當(dāng)前沒(méi)有事務(wù)氏堤,就拋出異常沙绝。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW):新建事務(wù)搏明,如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起闪檬。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.NOT_SUPPORTED):以非事務(wù)方式執(zhí)行操作星著,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起粗悯。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.NEVER):以非事務(wù)方式執(zhí)行虚循,如果當(dāng)前存在事務(wù),則拋出異常样傍。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.NESTED):如果當(dāng)前存在事務(wù)横缔,則在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒(méi)有事務(wù)衫哥,則執(zhí)行與PROPAGATION_REQUIRED類(lèi)似的操作茎刚。
@Transactional(rollbackFor = Exception.class,propagation = Propagation.SUPPORTS):支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù)撤逢,就以非事務(wù)方式執(zhí)行膛锭。
//博客參考