SpringBoot 在启动时已经加载了事务管理器,所以只需要在需要添加事务的方法/类上添加@Transactional即可生效,无需额外配置。
TransactionAutoConfiguration 事务的自动配置类解析:
SpringBoot 启动时加载/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports或者spring.factories文件中定义的所有自动配置类。其中包含了org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration事务自动配置类。

配置类中使用注解@ConditionalOnClass验证了PlatformTransactionManager.class接口的实例是否存在。接口的实现类如下:

接口的实现类中包含了DataSourceTransactionManager类,这个类在 SpringBoot 启动时通过org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration 配置类进行了导入,如下图。所以容器中就包含了PlatformTransactionManager.class类型的实例,所以TransactionAutoConfiguration 配置类正常加载。

TransactionAutoConfiguration 配置类中编写了一个内部类public static class EnableTransactionManagementConfiguration,其中包含了@EnableTransactionManagement注解,所以这也就是为什么启动类中不添加@EnableTransactionManagement注解事务也能生效的原因。
SpringBoot 配置事务
最新推荐文章于 2025-01-01 16:14:21 发布
2819

被折叠的 条评论
为什么被折叠?



