Transactional不起作用如何排查問題。

2021-09-05 10:18:39 字數 1290 閱讀 9829

按照以下幾個步驟逐一確認:

1、首先要看資料庫本身對應的庫、表所設定的引擎是什麼。myisam不支援事務,如果需要,則必須改為innnodb。

2、@transactional所註解的方法是否為public

3、@transactional所註解的方法所在的類,是否已經被註解@service或@component等。

4、需要呼叫該方法,且需要支援事務特性的呼叫方是在在 @transactional所在的類的外面。注意:類內部的其他方法呼叫這個註解了@transactional的方法,事務是不會起作用的。

5、註解為事務範圍的方法中,事務的回滾僅僅對於unchecked的異常有效。對於checked異常無效。也就是說事務回滾僅僅發生在出現runtimeexception或error的時候。

如果希望一般的異常也能觸發事務回滾,需要在註解了@transactional的方法上,將@transactional回滾引數設為:

@transactional(rollbackfor=exception.class)
6、非springboot專案,需要檢查spring配置檔案xml中:

(1)掃瞄包範圍是否配置好,否則不會在啟動時spring容器中建立和載入對應的bean物件。

(2)事務是否已經配置成開啟

7、springboot專案有兩個可選配置,預設已經支援事務了,可以寫也可以不寫。

(1)springboot啟動類,即程式入口類,需要註解@enabletransactionmanagement

import org.springframework.transaction.annotation.enabletransactionmanagement;

@enabletransactionmanagement

public static void main(string args)

}

spring:

profiles:

active: prod

datasource:

driver-class-name: com.mysql.jdbc.driver

url: jdbc:mysql:

username: root

password:

jpa:

hibernate:

ddl-auto:

show-sql: true

transaction:

rollback-on-commit-failure: true

Transactional註解事務不生效問題

spring 事務配置 事務配置 transactionmanager class org.springframework.jdbc.datasource.datasourcetransactionmanager datasource ref shardingdatasource transacti...

spring mvc autowired不起作用

注意檢查點 1.類上面是否加了 component和 controller註解,要想類中的autowired註解能夠正常工作,類的建立必須由spring來掌管,即類必須是乙個spring component。2.注入的變數不能在宣告中或者是建構函式中呼叫。例如 package com.arcsoft...

相親傷不起

13年年末,家介紹了個相親物件,一 聯絡是我的神啊,是初中同學。然後費了些時間,終於 追到了該同學,一見面。嚇哥一跳,長的真不咋地,哥沉默了兩天 初一,初二 同學發簡訊我,我,不回。說考慮下,畢竟要結婚嘛。她人其他方面還可以,就是長的一般以下吧,臉大,我對她不感冒。但是人好,其他方面還好。不是同學我...