Spring提供了聲明式事務方法@transactional
。但是默認的Spring事務只支持單數據源,而實際上一個系統往往需要寫多個數據源,這個時候我們就需要考慮如何通過Spring實現對分佈式事務的支持。
對於數據庫層面的分佈式事務而言,JTA(Java Transaction API,XA的JAVA實現方案)是一個不錯的解決方案,通常JTA需要應用服務器的支持,但在查閱SpringBoot的文檔時發現,它推薦了Atomikos和 Bitronix兩種無需服務器支持的分佈式事務組件,在這兩個組件中,Atomikos更受大家的好評,所以我選擇使用Atomikos
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>