首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    @Transactional TransactionManager 源码分析「建议收藏」

    基本概念 DataSourceConfiguration 创建DataSource DataSourceTransactionManagerAutoConfiguration 创建TransactionManager manager = new DataSourceTransactionManager(dataSource); TransactionManager 核心方法是 getTransaction ,commit, rollback 都由AbstractPlatformTransactionManager的抽象类实现 TransactionInfo 包含属性TransactionManager //... } 创建txInfo TransactionInfo txInfo = createTransactionIfNecessary() 创建transaction,实际调用transactionManager.getTransaction

    1K20编辑于 2022-11-16
  • 来自专栏山行AI

    关于spring和springboot的transactionManager那些事

    ConditionalOnMissingBean(PlatformTransactionManager.class) public DataSourceTransactionManager transactionManager ( DataSourceProperties properties) { DataSourceTransactionManager transactionManager = null) { this.transactionManagerCustomizers.customize(transactionManager); } return transactionManager; } } } 如果没有指定transactionManager时,使用springboot时会自动配置 springboot项目中会使用这个transactionManager来进行事务的管理(如果没有使用@Transactional注解,springboot则不会进行事务管理)。

    16.8K41发布于 2019-07-12
  • 来自专栏全栈程序员必看

    Spring集成MyBatis 事务管理

    ) { this.transactionManager = transactionManager; } public TransactionTemplate (PlatformTransactionManager transactionManager, TransactionDefinition transactionDefinition) { super(transactionDefinition); this.transactionManager = transactionManager; } public void setTransactionManager(PlatformTransactionManager transactionManager) { this.transactionManager 1、先配置transactionmanager <!

    58330编辑于 2022-08-31
  • 来自专栏java学习java

    硬核手写简易mybatis框架

    (TransactionManager transactionManager, Map<String, MapperStatement> mapperStatements) { this.transactionManager = transactionManager; this.mapperStatements = mapperStatements; } public TransactionManager (TransactionManager transactionManager) { this.transactionManager = transactionManager; } "); TransactionManager transactionManager =gettransactionManager(transactionManagerElt,dataSource transactionManager, Map<String, MapperStatement> mapperStatements) { this.transactionManager

    36741编辑于 2023-09-24
  • 来自专栏java学习java

    硬核手写简易mybatis框架

    (TransactionManager transactionManager, Map<String, MapperStatement> mapperStatements) { this.transactionManager = transactionManager; this.mapperStatements = mapperStatements; } public TransactionManager (TransactionManager transactionManager) { this.transactionManager = transactionManager; } "); TransactionManager transactionManager =gettransactionManager(transactionManagerElt,dataSource transactionManager, Map<String, MapperStatement> mapperStatements) { this.transactionManager

    24110编辑于 2023-10-15
  • 来自专栏快乐阿超

    手动回滚、提交事务

    (transactionDefinition); if (逻辑执行正确) { //提交事务 transactionManager.commit(transactionStatus); } else { // 回滚事务 transactionManager.rollback(transactionStatus); // 记录日志 log.error(e); } 或者是 PlatformTransactionManager transactionManager = Objects.requireNonNull (transactionDefinition); try{ //提交事务 transactionManager.commit(transactionStatus); } catch (Exception e) { // 回滚事务 transactionManager.rollback(transactionStatus); // 记录日志

    1.4K10编辑于 2022-08-16
  • 来自专栏springboot

    spring事务

    -- 2.配置事务的增强,指定对哪个事务管理器进行增强 --> <tx:advice id="txAdvice" transaction-manager="<em>transactionManager</em>" -- 2.开启事务的注解 --> <tx:annotation-driven transaction-manager="<em>transactionManager</em>"></tx:annotation-driven ") String value() default ""; @AliasFor("value") String transactionManager() default ""; = new DataSourceTransactionManager(); transactionManager.setDataSource(dataSource); return transactionManager; } }

    24500编辑于 2025-01-20
  • 来自专栏路人甲Java

    Spring多数据源事务如何玩? | Spring系列46篇

    属性指定事务管理器bean名称,如: @Transactional(transactionManager = "transactionManager1", propagation = Propagation.REQUIRED , name); } 这里补充一下,之前我们使用@Transactional的时候,并没有通过value或者transactionManager设置事务管理器,这是为什么? Service1中: @Transactional(transactionManager = "transactionManager1", propagation = Propagation.REQUIRED ,事务传播行为:REQUIRED 3、从spring容器中找到事务管理器transactionManager1,然后问一下transactionManager1,当前上下文中有没有事务,显然现在是没有的 ,事务传播行为:REQUIRED 11、从spring容器中找到事务管理器transactionManager1,然后问一下transactionManager1,当前上下文中有没有事务,显然是是有的,

    7.3K50发布于 2020-09-30
  • 来自专栏日常分享

    Spring 学习笔记(六)—— AOP的简单理解

    transactionManager=new TransactionManager(); @Override public int buy(String username, String ("用户"+username+"购买了"+productname); transactionManager.transaction_submit(); }catch (Exception e){ e.printStackTrace(); transactionManager.transaction_rollback( (); System.out.println("订单"+orderNum+"申请退回"); transactionManager.transaction_submit (); } } }   因为购买和退货的实际操作中会涉及到数据库,所以我们引入事务整个概念,来控制整个流程,现在创建一个TransactionManager来管理事务: package

    46840发布于 2018-09-04
  • 来自专栏SpringCloud专栏

    SpringBoot事务管理:声明式事务和编程式事务。将Service层的事务执行结果传递出去

    二是TransactionManager TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition (status); } catch (Exception e) { transactionManager.rollback(status); */ @Component public class TransactionUtil { @Autowired private PlatformTransactionManager transactionManager ; public boolean transact(Consumer consumer) { TransactionStatus status = transactionManager.getTransaction (status); return true; } catch (Exception e) { transactionManager.rollback

    3.7K30发布于 2019-01-17
  • 来自专栏码匠的流水账

    聊聊sharding-jdbc的XATransactionManager

    * * @return transaction manager */ TransactionManager getTransactionManager(); } AtomikosTransactionManager implements XATransactionManager { private final UserTransactionManager transactionManager ().enlistResource(xaResource); } @Override public TransactionManager getTransactionManager @Before public void setUp() { ReflectiveUtil.setProperty(atomikosTransactionManager, "transactionManager <TransactionManager>is(userTransactionManager)); } @Test public void assertClose() {

    84500发布于 2019-08-12
  • 来自专栏DT乱“码”

    Spring事务管理

    下面先说声明式: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分 DataSource、 TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为 SessionFactory,TransactionManager -- 第一种配置事务的方式 ,tx--> <tx:advice id="txadvice" transaction-manager="<em>transactionManager</em>"> <tx:attributes " ref="<em>transactionManager</em>"></property> <property name="transactionAttributes"> <props> -- 第四种配置事务的方式,注解 --> <tx:annotation-driven transaction-manager="<em>transactionManager</em>"/> 注解文件: package com.dao

    80360发布于 2018-02-09
  • 来自专栏用户1337634的专栏

    单元测试 - MockBean

    MockBean 测试代码示例 使用原生的Bean @SpringBootTest class TransactionManagerNoMockTest { @Resource private TransactionManager transactionManager; @Test void getUserInfo() { User user = transactionManager.getUserInfo 上下文中的UserManager */ @MockBean private UserManager userManager; @Resource private TransactionManager transactionManager; @BeforeEach public void setUp() { //重置Mock,防止重复设置 Mockito.reset userId.toString()).build(); }); } @Test void getUserInfo() { User user = transactionManager.getUserInfo

    2.1K10发布于 2021-01-20
  • 来自专栏王磊的博客

    面试突击82:SpringBoot 中如何操作事务?

    1.编程式事务 在 Spring Boot 中实现编程式事务又有两种实现方法: 使用 TransactionTemplate 对象实现编程式事务; 使用更加底层的 TransactionManager TransactionTemplate 注入到当前类中 ,然后再使用它提供的 execute 方法执行事务并返回相应的执行结果,如果程序在执行途中出现了异常,那么就可以使用代码手动回滚事务,具体实现代码如下: 1.2 TransactionManager 使用 TransactionManager 实现编程式事务相对麻烦一点,它需要使用两个对象:TransactionManager 的子类,加上 TransactionDefinition 事务定义对象 ,再通过调用 TransactionManager 的 getTransaction 获取并开启事务,然后调用 TransactionManager 提供的 commit 方法提交事务,或使用它的另一个方法 其中编程式事务又分为两种实现:使用 TransactionTemplate 对象或更加底层的 TransactionManager 对象分别实现编程式事务,它们的优点是灵活性更高,可以在任何代码片段上添加事务

    1.3K11编辑于 2022-09-27
  • 来自专栏愷龍的Blog

    MyBatis核心配置文件详解

    前面说了搭建MyBatis环境,本文是对MyBatis使用时的核心配置文件的一些说明 目录 environments transactionManager DataSource 引入jdbc.properties -- 事务管理器 --> <transactionManager type="JDBC"></transactionManager> <! -- 事务管理器 --> <transactionManager type="JDBC"></transactionManager> <! type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name --         transactionManager:设置事务管理方式         属性:           type="JDBC|MANAGED"           JDBC:表示当前环境中

    47330编辑于 2022-12-19
  • 来自专栏你我杂志刊

    Spring事务传播机制与隔离级别(面试必备—整理于网络)

    -- 定义事务管理器(声明式的事务) --> <bean id="<em>transactionManager</em>" class="org.springframework.orm.hibernate3 -- 配置事务管理器 --> <property name="transactionManager" ref="transactionManager" /> -- 定义事务管理器(声明式的事务) --> <bean id="<em>transactionManager</em>" class="org.springframework.orm.hibernate3 -- 配置事务管理器 --> <property name="transactionManager" ref="transactionManager" /> " ref="transactionManager" /> <!

    2.2K30编辑于 2022-08-09
  • 来自专栏JavaEdge

    Spring编程式事务详解

    ) { Assert.notNull(transactionManager, "The 'transactionManager' argument must not be null."); this.transactionTemplate = new TransactionTemplate(transactionManager); } public Object someServiceMethod private final TransactionTemplate transactionTemplate; public SimpleService(PlatformTransactionManager transactionManager ) { Assert.notNull(transactionManager, "The 'transactionManager' argument must not be null."); this.transactionTemplate = new TransactionTemplate(transactionManager); // the transaction settings

    77810发布于 2021-02-23
  • 来自专栏技术成长

    Spring事务处理数据库连接和示例

    org.springframework.transaction.support.DefaultTransactionDefinition;public class TransactionTest { private PlatformTransactionManager transactionManager ; public void performTransaction() { // 开启事务 TransactionStatus status = transactionManager.getTransaction try { // 执行数据库操作 // ... // 提交事务 transactionManager.commit (status); } catch (Exception e) { // 回滚事务 transactionManager.rollback(status ); } }}在上述代码中,transactionManager代表了Spring事务管理器,通过调用getTransaction()方法获取到事务,并在事务执行结束后调用commit

    52881编辑于 2023-11-08
  • 来自专栏每周聚焦

    Spring事务回滚的两种方法

    DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 对象 使用 TransactionStatus status = transactionManager.getTransaction (def);来开启一个事务, 使用 transactionManager.rollback(status); 来回滚这个事务 使用 transactionManager.commit(status); class UserServiceImpl implements UserService { @Autowired private DataSourceTransactionManager transactionManager def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); TransactionStatus status = transactionManager.getTransaction execute your business logic here //db operation } catch (Exception ex) { transactionManager.rollback

    1.4K10编辑于 2023-02-22
  • 来自专栏数据社

    kafka实践(十二):生产者(KafkaProducer)源码详解和调试

    = null); short acks = configureAcks(config, transactionManager ! transactionManager.resetProducerId(); if (! transactionManager.hasFatalError()) { transactionManager.transitionToFatalError(new KafkaException if (transactionManager.hasFatalError() || ! transactionManager.hasProducerId()) { RuntimeException lastError = transactionManager.lastError

    99730发布于 2020-12-08
领券