Spring @Transactional註解使用注意事項
阿新 • • 發佈:2019-02-03
1
注意設定rollbackFor屬性,很多部落格說預設只有RuntimeExcetion會觸發回滾,經驗證確實如此,所以rollbackFor最好應該設定如下:rollbackFor = {Exception.class},當然具體業務具體處理,可能有的業務丟擲的某些異常並不需要觸發回滾,所以此時應該細化處理異常。
2
MySQL資料庫表引擎應為InnoDB,否則不支援事務。但是XML tx/aop形式配置的事務似乎在引擎為MyISAM時也有效,我猜測這是不是Spring在應用層做了處理?
3
XML tx/aop配置事務,慎用<tx:method name=”*” />這樣的配置,Spring官網對該配置的註釋是:
<!-- other methods use the default transaction settings (see below) -->
表示其他所有方法都使用預設配置的事務。經驗證,確實是其他所有方法都被加上了預設配置的事務。有時我們並不想把其他所有方法都加上事務,因為事務多少是會影響效能的。
4
事務只有配置在public方法上,且是被外部呼叫時才有效,也就是說:事務配置在private和protected方法上肯定是沒有用處的;事務配置在public方法上,但該public方法被內部呼叫時事務也是無效的。