一些在spring事務上需要注意的問題

今天在無意間看到的這個問題,spring事務事關緊要,以此記錄,以備後續之需:

一,開啓事務首先看數據庫本身對應的庫、表所設置的引擎是什麼,Myisam是不支持事務,InnoDB是支持事務的

二,@Transactional所註解的方法是否爲public

三,@Transactional所註解的方法所在的類,是否有@Service或@Component註解,如果沒有,事務不生效

四,如需定義在方法上的事務生效,調用方需在這個方法所在類的外面。(類內部的其他方法調用了這個註解了@Transactional的方法,事務是不會生效的

五,註解爲事務範圍的方法中,事務的回滾僅僅對於 unchecked 的異常有效。對於checked的異常無效。也就是說事務回滾僅僅發生在出現Runtime Exception或Error的時候。如果希望一般的異常也能觸發事務回滾,需要在註解了@Transactional的方法上將@Transactional回滾參數設爲:

@Transactional(rollbackFor=Exception.class)

六,非springboot項目,需要檢查spring配置文件xml中:

1.掃描包範圍是否配置好,否則不會在啓動時spring容器中創建和加載對應的bean對象

<context:component-scan base-package="com.hopelee" ></context:component-scan>

2.事務是否已經配置成開啓

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章