對springBoot事務的一些初步了解

2021-09-26 19:43:01 字數 2162 閱讀 9524

事務的兩種管理方式

業務中相關的應用

事務由單獨單元的乙個或者多個sql語句組成,在這個單元中,每個sql語句時相互依賴的。而整個單獨單元作為乙個不可分割的整體,如果單元中某條sql語句一旦執行失敗或者產生錯誤,整個單元將會回滾,也就是所有受到影響的資料將會返回到事務開始以前的狀態;如果單元中的所有sql語句均執行成功,則事務被順利執行

在springboot中宣告式事務最常見,就是把需要事務的方法用@transactional標註一下就行了,這個一般用在service層。標註後該方法就具備了事務的能力,出錯了會自動回滾。

在大部分場景下,該方法已經夠用了。

在入口類使用註解@enabletransactionmanagement開啟事務

在訪問資料庫的service方法上新增註解@transactional即可

@enabletransactionmanagement

public static void main(string args)

}

@service

public class testserviceimpl implements testservice

}

在有些場景下,我們需要獲取事務的狀態,是執行成功了還是失敗回滾了,那麼使用宣告式事務就不夠用了,需要程式設計式事務。

在springboot中,可以使用兩種程式設計式事務。

@service

public class testserviceimpl implements testservice catch (exception e)

return null;

}});

}}

@service

public class testserviceimpl implements testservice catch (exception e)

}}

使用這個就可以把事務結果同步返回給呼叫端了,出異常了就返回false,成功了就true。

在專案中,往往需要執行資料庫操作後,傳送訊息或事件來非同步呼叫其他元件執行相應的操作,例如:

使用者註冊後傳送啟用碼;

配置修改後傳送更新事件等。

但是,資料庫的操作如果還未完成,此時非同步呼叫的方法查詢資料庫發現沒有資料,這就會出現問題

使用註解@transactionaleventlistener

使用transactionsynchronizationmanager方法

@service

public class transactioneventtestservice

//當事務提交後, 才會真正的執行@transactionaleventlistener配置的listener, 如果listener拋異常, 方法返回失敗, 但事務不會回滾.

}@component

public class transactioneventlistener

}

//執行緒池非同步呼叫提高效能

private final executorservice executorservice = executors.newfixedthreadpool(5);

public void insert(techbook techbook) catch (interruptedexception e)

system.out.println("complete send email after transaction commit...");

}});}}

);// async work but tx not work, execute even when tx is rollback

// asyncservice.executeaftertxcomplete();

threadlocalrandom random = threadlocalrandom.current();

if(random.nextint() % 2 ==0)

system.out.println("service end");

}

Spring Boot 事務的使用

spring boot 使用事務非常簡單,首先使用註解 enabletransactionmanagement 開啟事務支援後,然後在訪問資料庫的service方法上新增註解 transactional 便可。關於事務管理器,不管是jpa還是jdbc等都實現自介面 platformtransacti...

Spring Boot 事務的使用

spring boot 使用事務非常簡單,首先使用註解 enabletransactionmanagement 開啟事務支援後,然後在訪問資料庫的service方法上新增註解 transactional 便可。關於事務管理器,不管是jpa還是jdbc等都實現自介面 platformtransacti...

Spring Boot 事務的使用

標籤 spring 2016 01 27 17 26 85380人閱讀收藏 舉報spring boot 使用事務非常簡單,首先使用註解 enabletransactionmanagement 開啟事務支援後,然後在訪問資料庫的service方法上新增註解 transactional 便可。關於事務管...