加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SpringBoot-数据库事务

(2022-05-26 16:37:50)
分类: JAVA开发
Spring事务传播行为详解(有场景)

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。
事务传播行为用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的时事务如何传播。


 Spring事务失效的 8 大原因,这次可以吊打面试官了!


 Spring Boot 使用事务PlatformTransactionManager

在spring boot项目中,注解@SpringBootApplication在加载容器的时候,自动配置了事务管理器,所以不需要额外添加注解 @EnableTransactionManagement。仅仅在方法上加上 @Transactional 就能实现事务。

TransactionManager 创建

spring-boot-autoconfigure spring.factories  由自动配置创建

@AutoConfigureAfter({
        JtaAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class, Neo4jDataAutoConfiguration.class })
@EnableConfigurationProperties(TransactionProperties.class)
public class TransactionAutoConfiguration {}


@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE)
@EnableConfigurationProperties(DataSourceProperties.class)
class DataSourceTransactionManagerAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean(PlatformTransactionManager.class)
    DataSourceTransactionManager transactionManager(DataSource dataSource,
            ObjectProvider transactionManagerCustomizers) {
        return new DataSourceTransactionManager(dataSource);  <=====       
    }
}

}



@Import({ JndiJtaConfiguration.class, BitronixJtaConfiguration.class, AtomikosJtaConfiguration.class })
public class JtaAutoConfiguration {}


Class AtomikosJtaConfiguration <== JtaAutoConfiguration import
    @Bean
    JtaTransactionManager transactionManager(
        UserTransaction userTransaction,          
        TransactionManager transactionManager,
        ObjectProvider transactionManagerCustomizers) {
      return new JtaTransactionManager(userTrans, transManager);  <====
    }
}

0

阅读 收藏 喜欢 打印举报/Report
后一篇:微服务架构
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有