SpringBoot框架默认开启了事务吗

背景

 今天要为service层中的业务逻辑代码添加事务,于是就想看看框架是否通过直接在类或方法上添加@Transactional 注解,达到配置事务的目的。

解决过程

   通过百度搜索“SpringBoot开启事务管理的相关配置”,搜到的相关文章描述如下:

     Spring的事务处理中,通用的事务处理流程是由抽象事务管理器AbstractPlatformTransactionManager来提供的,而具体的底层事务处理实现,由PlatformTransactionManager的具体实现类来实现,如 DataSourceTransactionManager 、JtaTransactionManager和 HibernateTransactionManager等。   

    使用mybatis作为持久层框架,spring boot 会自动配置一个 DataSourceTransactionManager,我们只需在方法(或者类)加上 @Transactional 注解,就自动纳入 Spring 的事务管理了。

这时我就在想,目前我的SpringBoot框架中是否自动配置了DataSourceTransactionManager呢?关键点在于TransactionAutoConfiguration这个类,这是SpringBoot 的事务注解自动配置类,位于spring-boot-autoconfigure jar下。

那问题来了,我的项目中是否引入了这个包呢。经过查找发现,项目通过mybatis的依赖包引入,截图如下:

SpringBoot框架默认开启了事务吗

接下来,看下TransactionAutoConfiguration这个类的具体内容

SpringBoot框架默认开启了事务吗

@ConditionalOnClass 是Springboot实现自动配置的重要支撑之一。其用途是判断当前classpath下是否存在指定类,若是则实例化当前类。

该类中已经通过配置@EnableTransactionManagement开启了事务支持,不需要在启动类上在加该注解了SpringBoot框架默认开启了事务吗