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