Spring 注解之 @EnableTransactionManagement:Spring Boot 事務配置


Spring Boot 開啟聲明式事務支持

        所有的數據訪問技術都有事務處理機制,這些技術提供了API用來開啟事務、提交事務以完成數據操縱,或者在發生錯誤的時候回滾數據。Spring支持聲明式事務,這是基於AOP實現的。

        Spring提供了一個@EnableTransactionManagement 注解以在配置類上開啟聲明式事務的支持。添加該注解后,Spring容器會自動掃描被@Transactional注解的方法和類。簡單開啟事務管理:

@SpringBootApplication
@EnableTransactionManagement // 開啟注解事務管理,等價於xml配置方式的 <tx:annotation-driven />
public class DemoApplication {
。。。

 查看項目事務管理器

         關於事務管理器,不管是JPA還是JDBC等都實現自接口 PlatformTransactionManager,你如果添加的是 spring-boot-starter-jdbc 依賴,框架會默認注入 DataSourceTransactionManager 實例;如果添加的是 spring-boot-starter-data-jpa 依賴,框架會默認注入 JpaTransactionManager 實例。

 

數據訪問技術

實 現

JDBC

DataSourceTransactionManager

JPA

JpaTransactionManager

Hibernate

HibernateTransactionManager

JDO

JdoTransactionManager

分布式事務

JtaTransactionManager

數據訪問技術及其實現

         如下方法可以查看自動注入的是 PlatformTransactionManager 接口的哪個實現類:

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement //開啟聲明式事務支持
public class DemoApplication { public static void main(String[] args) { System.out.println("項目URL: http://localhost:8087/user/getUserById"); SpringApplication.run(DemoApplication.class, args); } @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>事務管理器:" + platformTransactionManager.getClass().getName()); return new Object(); } }

        啟動項目,在控制台找到如下信息,說明項目添加的是 spring-boot-starter-jdbc 依賴。

>>>>>>>>>>事務管理器:org.springframework.jdbc.datasource.DataSourceTransactionManager

        關於開啟Spring Boot聲明式事務,大家有什么看法?歡迎留言討論,共同進步,也希望大家多多點贊,祝各位生活愉快。

Reference

        《JavaEE開發的顛覆者: Spring Boot實戰》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM