Springboot通過aop實現(xiàn)事務(wù)控制過程解析
spring的事務(wù)控制本質(zhì)上是通過aop實現(xiàn)的。
在springboot中使用時,可以通過注解@Transactional進行類或者方法級別的事務(wù)控制,也可以自己通過spring提供的事務(wù)管理器手動控制事務(wù)
一、 @Transactional注解進行進行類或者方法級別的事務(wù)控制
不需要進行特別的設(shè)置,按照正常的配置整合spring和mybatis后,在需要進行事務(wù)控制的類上或者方法上加上
@Transactional注解,即可對其進行事務(wù)控制。
二、手動控制事務(wù)
當(dāng)需要在一個方法的內(nèi)部進行事務(wù)控制時,就需要利用spring提供的事務(wù)管理器來手動控制。在方法所在的類中注入事務(wù)管理器,然后在方法中需要的位置利用事務(wù)管理器進行控制:開啟事務(wù),提交事務(wù),回滾事務(wù)
@Autowired
PlatformTransactionManager platformTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
public void testTransaction() {
//開啟事務(wù)
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
try {
CategoryInfo categoryInfo1=new CategoryInfo();
categoryInfo1.setName("分類1");
categoryDataDao.add(categoryInfo1);
//模擬發(fā)生異常,事務(wù)回滾后應(yīng)該數(shù)據(jù)庫兩條記錄都沒有
int i=1/0;
CategoryInfo categoryInfo2=new CategoryInfo();
categoryInfo2.setName("分類2");
categoryDataDao.add(categoryInfo2);
//提交事務(wù)
platformTransactionManager.commit(transactionStatus);
} catch (Exception e) {
logger.error("發(fā)生異常事務(wù)回滾");
platformTransactionManager.rollback(transactionStatus);
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+Mybatis項目使用Redis做Mybatis的二級緩存的方法
本篇文章主要介紹了SpringBoot+Mybatis項目使用Redis做Mybatis的二級緩存的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Java使用泛型實現(xiàn)棧結(jié)構(gòu)的示例代碼
泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。本文將利用泛型實現(xiàn)簡單的棧結(jié)構(gòu),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08
SpringBoot項目中如何實現(xiàn)MySQL讀寫分離詳解
在高并發(fā)下需要對應(yīng)用進行讀寫分離,配置多數(shù)據(jù)源,即寫操作走主庫,讀操作則走從庫,主從數(shù)據(jù)庫負責(zé)各自的讀和寫,緩解了鎖的爭用,提高了讀取性能,這篇文章主要給大家介紹了關(guān)于SpringBoot項目中如何實現(xiàn)MySQL讀寫分離的相關(guān)資料,需要的朋友可以參考下2022-07-07
從?PageHelper?到?MyBatis?Plugin執(zhí)行概要及實現(xiàn)原理
這篇文章主要為大家介紹了從?PageHelper?到?MyBatis?Plugin執(zhí)行概要及實現(xiàn)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
@FeignClient的使用和Spring?Boot的版本適配方式
這篇文章主要介紹了@FeignClient的使用和Spring?Boot的版本適配方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot2.0整合Shiro框架實現(xiàn)用戶權(quán)限管理的示例
這篇文章主要介紹了SpringBoot2.0整合Shiro框架實現(xiàn)用戶權(quán)限管理的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Spring?Security實現(xiàn)用戶名密碼登錄詳解
這篇文章主要為大家詳細介紹了Spring Security如何實現(xiàn)用戶名密碼登錄功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2022-10-10

