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...