SpringBoot-数据库事务
(2022-05-26 16:37:50)分类: JAVA开发 |
Spring事务传播行为详解(有场景)
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。
事务传播行为用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的时事务如何传播。
在spring boot项目中,注解@SpringBootApplication在加载容器的时候,自动配置了事务管理器,所以不需要额外添加注解 @EnableTransactionManagement。仅仅在方法上加上 @Transactional 就能实现事务。
TransactionManager 创建
spring-boot-autoconfigure spring.factories由自动配置创建
@AutoConfigureAfter({
JtaAutoConfiguration.class, HibernateJpaAutoConfigur ation.class,
DataSourceTransactionMan agerAutoConfiguration.class, Neo4jDataAutoConfigurati on.class })
@EnableConfigurationProperties(TransactionProperties.class)
public class TransactionAutoConfigura{} tion
@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE)
@EnableConfigurationProperties(DataSourceProperties.class)
class DataSourceTransactionMan{ agerAutoConfiguration
@Bean
@ConditionalOnMissingBean (PlatformTransactionManag er.class)
DataSourceTransactionMan ager transactionManager(DataSource dataSource,
ObjectProvider transactionManagerCustom izers) {
return new DataSourceTransactionMan ager(dataSource); <=====
}
}
}
@Import({ JndiJtaConfiguration.class, BitronixJtaConfiguration.class, AtomikosJtaConfiguration .class })
public class JtaAutoConfiguration {}
Class AtomikosJtaConfiguration{ <== JtaAutoConfiguration import
@Bean
JtaTransactionManager transactionManager(
UserTransaction userTransaction,
TransactionManager transactionManager,
ObjectProvider transactionManagerCustom izers) {
return new JtaTransactionManager(userTrans, transManager); <====
}
}
前一篇:人生智慧20220526
后一篇:微服务架构