當前位置:編程學習大全網 - 編程軟體 - Spring Boot 項目中配置多數據源@Transactional註解失效問題

Spring Boot 項目中配置多數據源@Transactional註解失效問題

當壹個Spring Boot 項目在配置了多個數據源 , 在編寫 Service層方法 的時候 , 直接在service方法的上添加的 @Transactional 直接實現事務管理的方式是失效的 .

以最近接觸到的壹個持久層框架使用的是Jpa的項目為例 , 該項目通過硬編碼(配置類)的方式 , 在項目中配置了兩個不同的數據源 , 所以這個項目分別根據兩個數據源配置了各自的事務管理器 PlatformTransactionManager , 如下 :

第壹個數據源的事務管理器配置類 :

第二個數據源事務管理器配置類 :

可以看到第二個事務管理器的Bean方法上添加了 @Primary 註解 , 所以在通過 PlatformTransactionManager 類型註入事務管理器的bean時 , 默認是根據類型去註入 , 如果該類型有多個 Bean , 如不通過bean的名字去註入 , 則默認是會註入被 @Primary 標識的bean的 ;

所以在這個項目中 , 當在業務層方法添加 @Transactional 註解時 , 默認是調用了 transactionManagerTwo 這個bean , 而我在編寫service層的方法時 , 調用的是第壹個數據源對應的Dao層方法 , 所以直接添加 @Transactional 是不能實現事務管理的 ,

需要在使用 @Transactional 註解時指定使用的事務管理器的bean的名字 , 比如我這裏調用的是第壹個數據源的dao層方法 , 所以需要指定對應的事務管理器 : @Transactional(transactionManager = "transactionManagerOne") .

  • 上一篇:計算機方面女生可以學壹些什麽?
  • 下一篇:長纓反潛導彈的幾個問題
  • copyright 2024編程學習大全網