spring項目__添加事務_爬坑過程

配置文件調整:

在artery-context.xml或spring的配置文件中 添加tx的schema相關信息

xmlns:tx="http://www.springframework.org/schema/tx" 

xsi:schemaLocation=下添加

http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx
-4.2.xsd

要確保與項目中的spring版本相對應

在配置文件中引入針對哪個數據源配置事務

  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>

添加tx事務,註解的驅動

<tx:annotation-driven transaction-manager="transactionManager" />

在需要添加事務的方法上 添加註解@Transactional__以下爲一個在方法上添加事務的例子

如果要在service 層有要加try-catch的必要性但又需觸發外層事務

try {    
    } catch (Exception e) {
        e.printStackTrace();
        logger.error("發生異常");
        throw new RuntimeException("這裏出錯了,將要觸發外層事務");
    }
則要 拋出異常 觸發外層事務機制    

以下爲配置事務的注意事項:

A. 一個功能是否要事務,必須納入設計、編碼考慮。不能僅僅完成了基本功能就ok。
B. 如果加了事務,必須做好開發環境測試(測試環境也儘量觸發異常、測試回滾),確保事務生效。
C. 以下列了事務使用過程的注意事項,請大家留意。
1. 不要在接口上聲明@Transactional ,而要在具體類的方法上使用 @Transactional 註解,否則註解可能無效。
2.不要圖省事,將@Transactional放置在類級的聲明中,放在類聲明,會使得所有方法都有事務。故@Transactional應該放在方法級別,不需要使用事務的方法,就不要放置事務,比如查詢方法。否則對性能是有影響的。
3.使用了@Transactional的方法,對同一個類裏面的方法調用, @Transactional無效。比如有一個類Test,它的一個方法A,A再調用Test本類的方法B(不管B是否public還是private),但A沒有聲明註解事務,而B有。則外部調用A之後,B的事務是不會起作用的。(經常在這裏出錯)
4.使用了@Transactional的方法,只能是public,@Transactional註解的方法都是被外部其他類調用纔有效,故只能是public。道理和上面的有關聯。故在 protected、private 或者 package-visible 的方法上使用 @Transactional 註解,它也不會報錯,但事務無效。

若以上信息不夠讓你理解  查看該鏈接進行更詳細解釋

https://jingyan.baidu.com/article/6525d4b180ee42ac7c2e9460.html

 

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