spring註解事物,不生效,不回滾,正確配置

2021-08-04 11:37:39 字數 920 閱讀 4522

spring開發中如果需要加入註解事務,可以進行如下配置。

在spring的配置檔案中加入:

class="org.springframework.jdbc.datasource.datasourcetransactionmanager">

proxy-target-class="false"/>

在service層方法上加上@transactional註解,該方法就會開啟乙個事務

在service類上加上@transactional,宣告這個service所有方法需要事務管理。每乙個業務方法開始時都會開啟乙個事務。

spring預設情況下會對執行期例外(runtimeexception)進行事務回滾。這個例外是unchecked

如果遇到checked意外就不回滾。

如何改變預設規則:

1 讓checked例外也回滾:在整個方法前加上 @transactional(rollbackfor=exception.class)

2 讓unchecked例外不回滾: @transactional(notrollbackfor=runtimeexception.class)

3 不需要事務管理的(只查詢的)方法:@transactional(propagation=propagation.not_supported)

4 如果不新增rollbackfor等屬性,spring碰到unchecked exceptions都會回滾,不僅是runtimeexception,也包括error。

如果**被try catch 了也不會回滾,如果需要回滾,有兩種方法,

1.在catch中 throw runtimeexcption();

2.在catch中手動回滾 transactionaspectsupport.currenttransactionstatus().setrollbackonly();

Transactional註解事務不生效問題

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

spring 註解aop不生效

首先基礎要理解spring配置檔案和springmvc配置檔案 spring註解不生效可從以下幾個方面找原因 1 springmvc的配置檔案中只配置掃瞄 controller的註解,spring的配置檔案掃瞄除了 controller的註解的其他的註解 2 檢查 pointcut 的表示式是否正確...

spring事物不回滾問題

如果對方法設定了spring事物,並且在設定事物的方法中進行了try catch 那麼,一定要在catch中把異常丟擲,否則事物不會回滾,下面上例子說話 事物級別 required 1 不回滾情況 deleteuserbyname產生了 異常,但是捕獲了並且沒有丟擲 public boolean d...