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实战》

 

posted @   楼兰胡杨  阅读(9130)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示