最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring Boot 事務(wù)的使用

 更新時間:2017年04月10日 11:11:13   投稿:mrr  
spring Boot 使用事務(wù)非常簡單,首先使用注解 @EnableTransactionManagement 開啟事務(wù)支持后,然后在訪問數(shù)據(jù)庫的Service方法上添加注解 @Transactional 便可。接下來通過本文重點給大家介紹spring boot事務(wù)的使用,需要的的朋友參考下吧

spring Boot 使用事務(wù)非常簡單,首先使用注解 @EnableTransactionManagement 開啟事務(wù)支持后,然后在訪問數(shù)據(jù)庫的Service方法上添加注解 @Transactional 便可。

關(guān)于事務(wù)管理器,不管是JPA還是JDBC等都實現(xiàn)自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依賴,框架會默認(rèn)注入 DataSourceTransactionManager 實例。如果你添加的是 spring-boot-starter-data-jpa 依賴,框架會默認(rèn)注入 JpaTransactionManager 實例。

你可以在啟動類中添加如下方法,Debug測試,就能知道自動注入的是 PlatformTransactionManager 接口的哪個實現(xiàn)類。

@EnableTransactionManagement // 啟注解事務(wù)管理,等同于xml配置方式的 <tx:annotation-driven />
@SpringBootApplication
public class ProfiledemoApplication {
 @Bean
 public Object testBean(PlatformTransactionManager platformTransactionManager){
 System.out.println(">>>>>>>>>>" + platformTransactionManager.getClass().getName());
 return new Object();
 }
 public static void main(String[] args) {
 SpringApplication.run(ProfiledemoApplication.class, args);
 }
}

這些SpringBoot為我們自動做了,這些對我們并不透明,如果你項目做的比較大,添加的持久化依賴比較多,我們還是會選擇人為的指定使用哪個事務(wù)管理器。

代碼如下:

@EnableTransactionManagement
@SpringBootApplication
public class ProfiledemoApplication {
 // 其中 dataSource 框架會自動為我們注入
 @Bean
 public PlatformTransactionManager txManager(DataSource dataSource) {
 return new DataSourceTransactionManager(dataSource);
 }
 @Bean
 public Object testBean(PlatformTransactionManager platformTransactionManager) {
 System.out.println(">>>>>>>>>>" + platformTransactionManager.getClass().getName());
 return new Object();
 }
 public static void main(String[] args) {
 SpringApplication.run(ProfiledemoApplication.class, args);
 }
}

在Spring容器中,我們手工注解@Bean 將被優(yōu)先加載,框架不會重新實例化其他的 PlatformTransactionManager 實現(xiàn)類。

然后在Service中,被 @Transactional 注解的方法,將支持事務(wù)。如果注解在類上,則整個類的所有方法都默認(rèn)支持事務(wù)。

對于同一個工程中存在多個事務(wù)管理器要怎么處理,請看下面的實例,具體說明請看代碼中的注釋。

@EnableTransactionManagement // 開啟注解事務(wù)管理,等同于xml配置文件中的 <tx:annotation-driven />
@SpringBootApplication
public class ProfiledemoApplication implements TransactionManagementConfigurer {
 @Resource(name="txManager2")
 private PlatformTransactionManager txManager2;
 // 創(chuàng)建事務(wù)管理器1
 @Bean(name = "txManager1")
 public PlatformTransactionManager txManager(DataSource dataSource) {
 return new DataSourceTransactionManager(dataSource);
 }
 // 創(chuàng)建事務(wù)管理器2
 @Bean(name = "txManager2")
 public PlatformTransactionManager txManager2(EntityManagerFactory factory) {
 return new JpaTransactionManager(factory);
 }
 // 實現(xiàn)接口 TransactionManagementConfigurer 方法,其返回值代表在擁有多個事務(wù)管理器的情況下默認(rèn)使用的事務(wù)管理器
 @Override
 public PlatformTransactionManager annotationDrivenTransactionManager() {
 return txManager2;
 }
 public static void main(String[] args) {
 SpringApplication.run(ProfiledemoApplication.class, args);
 }
}
@Component
public class DevSendMessage implements SendMessage {
 // 使用value具體指定使用哪個事務(wù)管理器
 @Transactional(value="txManager1")
 @Override
 public void send() {
 System.out.println(">>>>>>>>Dev Send()<<<<<<<<");
 send2();
 }
 // 在存在多個事務(wù)管理器的情況下,如果使用value具體指定
 // 則默認(rèn)使用方法 annotationDrivenTransactionManager() 返回的事務(wù)管理器
 @Transactional
 public void send2() {
 System.out.println(">>>>>>>>Dev Send2()<<<<<<<<");
 }
}

注:

如果Spring容器中存在多個 PlatformTransactionManager 實例,并且沒有實現(xiàn)接口 TransactionManagementConfigurer 指定默認(rèn)值,在我們在方法上使用注解 @Transactional 的時候,就必須要用value指定,如果不指定,則會拋出異常。

對于系統(tǒng)需要提供默認(rèn)事務(wù)管理的情況下,實現(xiàn)接口 TransactionManagementConfigurer 指定。

對有的系統(tǒng),為了避免不必要的問題,在業(yè)務(wù)中必須要明確指定 @Transactional 的 value 值的情況下。不建議實現(xiàn)接口 TransactionManagementConfigurer,這樣控制臺會明確拋出異常,開發(fā)人員就不會忘記主動指定。

參考閱讀:

詳解SpringBoot的事務(wù)管理

Spring Boot 快速入門指南

Spring Boot 快速入門教程

以上所述是小編給大家介紹的Spring Boot 事務(wù)的使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java實現(xiàn)百度AOI數(shù)據(jù)的解析與轉(zhuǎn)換

    Java實現(xiàn)百度AOI數(shù)據(jù)的解析與轉(zhuǎn)換

    Java作為一種成熟且廣泛應(yīng)用的編程語言,具有跨平臺、面向?qū)ο?、安全性高等特點,非常適合用于開發(fā)各種類型的應(yīng)用程序,本文為大家整理了基于Java的AOI數(shù)據(jù)解析與轉(zhuǎn)換的實現(xiàn)方法,需要的可以參考下
    2025-02-02
  • Spring Boot 入門之消息中間件的使用

    Spring Boot 入門之消息中間件的使用

    本篇文章主要介紹了Spring Boot 入門之消息中間件的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Maven profile實現(xiàn)不同環(huán)境的配置管理實踐

    Maven profile實現(xiàn)不同環(huán)境的配置管理實踐

    這篇文章主要介紹了Maven profile實現(xiàn)不同環(huán)境的配置管理實踐,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • IDEA常用配置之類Tab頁多行顯示方式

    IDEA常用配置之類Tab頁多行顯示方式

    這篇文章主要介紹了IDEA常用配置之類Tab頁多行顯示方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java之Zookeeper注冊中心原理剖析

    Java之Zookeeper注冊中心原理剖析

    這篇文章主要介紹了Java之Zookeeper注冊中心原理剖析,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Java NIO原理圖文分析及代碼實現(xiàn)

    Java NIO原理圖文分析及代碼實現(xiàn)

    本文主要介紹Java NIO原理的知識,這里整理了詳細(xì)資料及簡單示例代碼和原理圖,有需要的小伙伴可以參考下
    2016-09-09
  • 解決import包時報 Java 程序包不存在的問題

    解決import包時報 Java 程序包不存在的問題

    你是否也有過在import包時idea報錯說這個包不存在,可是這個包我們看得到確實存在的情況,不要慌,今天這篇文章帶你徹底告別這個問題
    2021-10-10
  • IDEA2020.1使用LeetCode插件運行并調(diào)試本地樣例的方法詳解

    IDEA2020.1使用LeetCode插件運行并調(diào)試本地樣例的方法詳解

    這篇文章主要介紹了IDEA2020.1使用LeetCode插件運行并調(diào)試本地樣例的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • Kotlin常用函數(shù)let,with,run,apply用法與區(qū)別案例詳解

    Kotlin常用函數(shù)let,with,run,apply用法與區(qū)別案例詳解

    這篇文章主要介紹了Kotlin常用函數(shù)let,with,run,apply用法與區(qū)別案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • JAVA刪除字符串固定下標(biāo)字串的實現(xiàn)

    JAVA刪除字符串固定下標(biāo)字串的實現(xiàn)

    本文主要介紹了JAVA刪除字符串固定下標(biāo)字串的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

永和县| 邯郸市| 宁武县| 桃园市| 密山市| 阿克| 襄垣县| 湖州市| 英德市| 淅川县| 博野县| 玛纳斯县| 黑龙江省| 花莲县| 宁波市| 赤峰市| 灵璧县| 湖口县| 湘潭县| 玉山县| 重庆市| 祥云县| 油尖旺区| 安国市| 庐江县| 宜章县| 抚顺县| 乡宁县| 永丰县| 比如县| 平乐县| 贺州市| 平谷区| 台湾省| 大港区| 汉阴县| 丹寨县| 古田县| 宣武区| 府谷县| 宁化县|