Spring數據庫事務失效的8大緣由,學習總結

常見緣由是方法自身調用、異常被吃、異常拋出類型不對。
數據庫

緣由ide

備註spa

數據庫引擎不支持事務代理

MySQL的InnoDB引擎支持事務,可是MyISAM不支持的。注意MySQL5.5.5以前默認引擎是MyISAM事務

類沒有被Spring管理ci

註解@Service,類才被Spring加載成Beanget

方法不是publicit

註解@Transactional用於public的方法,或者開啓AspectJ代理模式io

方法的自身調用問題table

經過Spring代理類在外部調用事務時@Transactional才生效

數據源沒有配置事務管理器

爲數據源配置事務管理器

方法被聲明爲不支持事務

@Transactional(propagation = Propagation.NOT_SUPPORTED)已經聲明瞭該方法不支持事務

異常被吃了

異常處理時沒有拋出

異常拋出類型錯誤

默認事務回滾異常是RuntimeException,能夠指定其餘異常:@Transactional(rollbackFor = Exception.class)

 

原文連接:Java技術棧https://mp.weixin.qq.com/s/6EpeHAF5UmFzEuaQPWjdTw

相關文章
相關標籤/搜索