日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring事務失效的幾種原因

瀏覽:111日期:2023-08-14 10:20:58

數據庫引擎不支持事務

在MySQL數據庫中有幾種引擎(InnoDB,MyISAM,Memory等等),僅僅InnoDB支持事務,如果數據庫底層都不支持事務的話,那么再怎么折騰都是白搭.

@transactional加在private方法上

@Transactional只能加在public方法上,如果需要在private方法中加入事務,可以使用Aspect配transactionManager使用.

本類方法調本類另一個方法

例如:

@Servicepublic class UserServiceImpl implements UserService { @Transactional public void update(User user) { //check updateUserInfo(user); } @Transactional(propagation = Propagation.REQUIRES_NEW) public void updateUser(User user) { // update user }}

@Transactional(propagation = Propagation.REQUIRES_NEW)是無效的,在Spring中是使用代理的方式實現事務,發生自身調用的時候,沒有經過Spring的代理,自然事務失效.

不支持事務

@Servicepublic class UserServiceImpl implements UserService { @Transactional(propagation = Propagation.NOT_SUPPORTED) public void update(User user) { //do some action }}

@Transactional(propagation = Propagation.NOT_SUPPORTED)表示如果當前存在事務就掛起,以沒有事務的方式運行,主動不支持事務了,那么再怎么操作也是白搭. 此處貼下Spring的傳播行為:

/** * Support a current transaction, create a new one if none exists. * Analogous to EJB transaction attribute of the same name. * <p>This is the default setting of a transaction annotation. */ REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED), /** * Support a current transaction, execute non-transactionally if none exists. * Analogous to EJB transaction attribute of the same name. * <p>Note: For transaction managers with transaction synchronization, * PROPAGATION_SUPPORTS is slightly different from no transaction at all, * as it defines a transaction scope that synchronization will apply for. * As a consequence, the same resources (JDBC Connection, Hibernate Session, etc) * will be shared for the entire specified scope. Note that this depends on * the actual synchronization configuration of the transaction manager. * @see org.springframework.transaction.support.AbstractPlatformTransactionManager#setTransactionSynchronization */ SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS), /** * Support a current transaction, throw an exception if none exists. * Analogous to EJB transaction attribute of the same name. */ MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY), /** * Create a new transaction, and suspend the current transaction if one exists. * Analogous to the EJB transaction attribute of the same name. * <p><b>NOTE:</b> Actual transaction suspension will not work out-of-the-box * on all transaction managers. This in particular applies to * {@link org.springframework.transaction.jta.JtaTransactionManager}, * which requires the {@code javax.transaction.TransactionManager} to be * made available to it (which is server-specific in standard Java EE). * @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager */ REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW), /** * Execute non-transactionally, suspend the current transaction if one exists. * Analogous to EJB transaction attribute of the same name. * <p><b>NOTE:</b> Actual transaction suspension will not work out-of-the-box * on all transaction managers. This in particular applies to * {@link org.springframework.transaction.jta.JtaTransactionManager}, * which requires the {@code javax.transaction.TransactionManager} to be * made available to it (which is server-specific in standard Java EE). * @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager */ NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED), /** * Execute non-transactionally, throw an exception if a transaction exists. * Analogous to EJB transaction attribute of the same name. */ NEVER(TransactionDefinition.PROPAGATION_NEVER), /** * Execute within a nested transaction if a current transaction exists, * behave like PROPAGATION_REQUIRED else. There is no analogous feature in EJB. * <p>Note: Actual creation of a nested transaction will only work on specific * transaction managers. Out of the box, this only applies to the JDBC * DataSourceTransactionManager when working on a JDBC 3.0 driver. * Some JTA providers might support nested transactions as well. * @see org.springframework.jdbc.datasource.DataSourceTransactionManager */ NESTED(TransactionDefinition.PROPAGATION_NESTED);

異常被catch

@Servicepublic class UserServiceImpl implements UserService { @Transactional public void update(User user) { try{ }catch(Exception e){ log.error(e.getMessage(),e); } }}

觸發回滾的操作是被接收到異常,一般我們會在@Transactional后面加上rollbackFor或者noRollbackForClassName來指明觸發回滾的異常,但是如果在代碼中給catch了異常,那么對于Spring代理來說就這個方法從頭到尾都沒有問題,自然不會觸發回滾.

異常類型錯誤

@Servicepublic class UserServiceImpl implements UserService { @Transactional public void update(User user) { try{ }catch(Exception e){ log.error(e.getMessage(),e); throw new Exception(e.getMessage()); } }}

以上方式throw new Exception(e.getMessage());事務也是無效的,主要原因是事務回滾的條件是throw 運行時異常(RunTimeException).如果需要其他異常也回滾,需要在@Transactional后面加上rollbackFor或者noRollbackForClassName來指明觸發回滾的異常.

沒有被Spring管理

不在Spring環境下,自然不受Spring的管理,事務管理器也當然失去了作用.

沒有配置TransactionManager

需要對當前數據源配置事務管理器,尤其是在多數據源的情況下.

以上就是Spring事務失效的幾種原因的詳細內容,更多關于Spring事務失效的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩一区二区三区视频播放| 综合激情网站| 欧美日韩视频免费看| 免费成人在线观看| 中文字幕亚洲影视| 日韩精品国产精品| 国产日韩欧美| 麻豆精品蜜桃视频网站| 久久国产麻豆精品| 国产精品毛片久久久| 精品久久不卡| 欧洲av不卡| 午夜精品免费| 亚洲欧美日韩一区在线观看| 中文无码久久精品| 视频一区二区欧美| 日韩精品乱码av一区二区| 国产欧美一级| 久久麻豆视频| 久久久国产亚洲精品| 在线观看免费一区二区| 男人的天堂久久精品| 日韩1区2区3区| 精品国产亚洲一区二区三区在线 | 久久美女精品| 午夜日韩福利| 午夜视频一区二区在线观看| 欧美日韩亚洲一区三区| 美女久久精品| 91综合视频| 欧美不卡视频| 亚洲精品九九| 韩日一区二区| 在线视频精品| 国产精品美女久久久久久不卡| av最新在线| 国产一区二区高清| 国产精品激情| 亚洲a一区二区三区| 日韩一区欧美二区| 久久99精品久久久野外观看| 久久久噜噜噜| 日韩区欧美区| 欧美日韩视频网站| 日韩一级不卡| 欧美激情福利| 亚洲精品2区| 欧美日韩亚洲一区在线观看| 久久三级福利| 88久久精品| 蜜桃成人av| 免费在线成人| 99国产精品久久久久久久成人热| 欧美色综合网| 亚洲一级二级| 国产精品porn| 午夜亚洲一区| 四虎8848精品成人免费网站| 久久国产精品99国产| 国产情侣一区在线| 精品国产乱码久久久| 另类激情亚洲| 神马久久午夜| 日本午夜精品| 亚洲女同一区| 久久久久久网| 国产美女亚洲精品7777 | 国产成人精品一区二区三区视频 | 国产亚洲亚洲| 国产一区二区精品福利地址| 日韩精品一二区| 精品国产美女a久久9999| 久久国产精品久久w女人spa| 国产成人精品一区二区三区视频| 亚洲资源在线| 日韩成人亚洲| 久久av影视| 男人的天堂亚洲一区| 成人啊v在线| 国产日韩一区二区三区在线| 午夜久久一区| 在线天堂资源www在线污| 日韩在线观看中文字幕| 免费不卡中文字幕在线| 精品视频国产| 国产探花一区二区| 99在线观看免费视频精品观看| 鲁鲁在线中文| 久久精品一区二区国产| 日韩激情视频网站| 老司机久久99久久精品播放免费| 中文字幕高清在线播放| 91亚洲精品视频在线观看| 日韩视频不卡| 丝袜av一区| 色在线中文字幕| 精品视频一区二区三区四区五区 | 视频在线观看91| 久久一区二区中文字幕| 国产精品国产一区| 国产福利资源一区| 欧美一区成人| 日韩av影院| 亚洲精品少妇| 热久久国产精品| 石原莉奈一区二区三区在线观看 | 99国产精品久久久久久久成人热 | 成人免费一区| 久久精品国产福利| 国产精品欧美一区二区三区不卡| 日本亚洲视频| 亚洲狼人精品一区二区三区| 国产视频一区三区| 99香蕉国产精品偷在线观看 | 中文在线а√在线8| 国产aa精品| 国产精品a久久久久| 免费观看在线综合| 国产精品三上| 六月丁香综合| 亚洲天堂免费| 免费在线视频一区| 亚洲欧美日韩一区在线观看| 亚洲一区久久| 欧美中文字幕| 一区二区国产精品| 日韩欧美高清一区二区三区| 一区二区电影| 亚洲精品福利| 久久国产免费看| 精品中国亚洲| 国产欧美一区二区三区精品酒店| 播放一区二区| 五月天久久久| 男女激情视频一区| 人人爱人人干婷婷丁香亚洲| 久久激情五月婷婷| 精品视频自拍| 99久久精品国产亚洲精品| 亚洲精品网址| 在线精品福利| 国产精品久久亚洲不卡| 精品网站aaa| 亚洲爱爱视频| 玖玖精品视频| 欧美日本久久| 欧美国产偷国产精品三区| 亚洲国产综合在线看不卡| 亚洲免费影院| 青青草伊人久久| 精品国产不卡| 久久精品官网| 久色成人在线| 国产美女撒尿一区二区| 国产精品久久久久蜜臀| 亚洲精品午夜av福利久久蜜桃| 亚洲涩涩av| 日韩成人午夜精品| 九九99久久精品在免费线bt| 日韩免费高清| 久久99伊人| 国产精品午夜av| 群体交乱之放荡娇妻一区二区| 亚洲综合国产| 国产精品magnet| 久久精品99久久无色码中文字幕| 视频一区免费在线观看| 国产精品qvod| 性欧美69xoxoxoxo| 欧美日本不卡高清| 啪啪国产精品| 日本伊人久久| 欧美日韩视频网站| 国产女优一区| 精品国产欧美日韩一区二区三区| 九九综合九九| 国产日韩免费| 欧美日韩在线二区| 日本欧美韩国一区三区| 精品日韩视频| 日本天堂一区| 国模 一区 二区 三区| 日韩亚洲精品在线观看| 成人在线免费观看网站| 视频一区在线播放| 国产一区二区三区不卡视频网站 | 日韩中文影院| 中文无码日韩欧| 高清av一区| 亚洲精品人人| 久久免费高清| 青青国产91久久久久久| 久久精品亚洲欧美日韩精品中文字幕| 亚洲精品护士| 日本久久综合| 色8久久久久| 久久精品国产亚洲夜色av网站 | 视频一区视频二区中文| 成人午夜毛片| 日本精品一区二区三区在线观看视频|