SpringBoot框架默认开启了事务吗
背景
今天要为service层中的业务逻辑代码添加事务,于是就想看看框架是否通过直接在类或方法上添加@Transactional 注解,达到配置事务的目的。
解决过程
通过百度搜索“SpringBoot开启事务管理的相关配置”,搜到的相关文章描述如下:
Spring的事务处理中,通用的事务处理流程是由抽象事务管理器AbstractPlatformTransactionManager来提供的,而具体的底层事务处理实现,由PlatformTransactionManager的具体实现类来实现,如 DataSourceTransactionManager 、JtaTransactionManager和 HibernateTransactionManager等。 使用mybatis作为持久层框架,spring boot 会一个 DataSourceTransactionManager,我们只需在方法(或者类)加上 @Transactional 注解,就自动纳入 Spring 的事务管理了。
这时我就在想,目前我的SpringBoot框架中是否自动配置了DataSourceTransactionManager呢?关键点在于TransactionAutoConfiguration这个类,这是SpringBoot 的事务注解自动配置类,位于spring-boot-autoconfigure jar下。
接下来,看下TransactionAutoConfiguration这个类的具体内容
@ConditionalOnClass 是Springboot实现自动配置的重要支撑之一。其用途是判断当前classpath下是否存在指定类,若是则实例化当前类。
该类中已经通过配置@EnableTransactionManagement开启了事务支持,不需要在启动类上在加该注解了