springboot事務中的一些坑

2022-06-20 00:51:14 字數 1407 閱讀 9364

在需要加入事務的方法上加入註解@transactional

@transactional(rollbackfor = rollbackexception.class) 丟擲指定異常時回滾

/**

* * (rollbackfor = rollbackexception.class) 拋出自定義異常時,回滾事務。

* * @throws rollbackexception

*/@override

@transactional(rollbackfor = rollbackexception.class)

public void insertthenrollback() throws rollbackexception

例如有這個實現類studentserviceimpl:

@component

public class studentserviceimpl implements studentservice

/*** * spring的事務是通過aop進行**增強的。

* 這裡是在類的內部直接執行方法呼叫,並沒有呼叫**類來進行方法呼叫,所以這裡事務不會回滾。* *

* @throws rollbackexception

*/@override

public void invokeinsertthenrollback1() throws rollbackexception

}

上面的insertthenrollback()回回滾事務,invokeinsertthenrollback1()呼叫了insertthenrollback()方法但是不會回滾事務,這是為什麼呢?

這是因為spring的事務是通過aop進行**增強的,但這裡是在類的內部直接執行方法呼叫,並沒有呼叫**類來進行方法呼叫,所以這裡事務不會回滾。

/**

** 通過aopcontext.currentproxy()獲取當前類的**物件

** @throws rollbackexception

*/@override

public void invokeinsertthenrollback2() throws rollbackexception

//把自己的例項注入進來

@autowired

private studentservice studentservice;

/*** 把自己的例項注入進來

* @throws rollbackexception

*/@override

public void invokeinsertthenrollback3() throws rollbackexception

springBoot中mybatis事務使用方法

1.在springboot中mybatis plus boot starter 或 mybatis spring boot starter 會自動定義好事物,在pom.xml中匯入jar 3.在需要回滾的方法或類上新增註解 transactional user表資料會執行成功 而 userinfo表...

springboot中新增事務註解

1.首先在service層中的方法前新增 transactional service public class userservice transactional public void deletebyid integer id 2.在springboot的啟動中新增註解 enabletransa...

Spring Boot中的事務管理,事務的傳播行為

在宣告事務時,只需要通過value屬性指定配置的事務管理器名即可,例如 transactional value transactionmanagerprimary 所謂事務的傳播行為是指,如果在開始當前事務之前,乙個事務上下文已經存在,此時有若干選項可以指定乙個事務性方法的執行行為。指定方法 通過使...