当前位置:首页 > Java技术 > SpringBoot事务管理入门

SpringBoot事务管理入门

2022年11月09日 21:31:43Java技术8

SpringBoot事务管理入门

一.SpringBoot整合事务管理。

SpringBoot整合事务管理只需要在主要方法上加@Transition注解即可。

二.SpringBoot分布式事务管理。

配置数据源文件:

# Mysql 1
mysql.datasource.test.url = jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
mysql.datasource.test.username = root
mysql.datasource.test.password = 123456

mysql.datasource.test.minPoolSize = 3
mysql.datasource.test.maxPoolSize = 25
mysql.datasource.test.maxLifetime = 20000
mysql.datasource.test.borrowConnectionTimeout = 30
mysql.datasource.test.loginTimeout = 30
mysql.datasource.test.maintenanceInterval = 60
mysql.datasource.test.maxIdleTime = 60
mysql.datasource.test.testQuery = select 1


# Mysql 2
mysql.datasource.test1.url =jdbc:mysql://localhost:3306/test1?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
mysql.datasource.test1.username =root
mysql.datasource.test1.password =123456

mysql.datasource.test1.minPoolSize = 3
mysql.datasource.test1.maxPoolSize = 25
mysql.datasource.test1.maxLifetime = 20000
mysql.datasource.test1.borrowConnectionTimeout = 30
mysql.datasource.test1.loginTimeout = 30
mysql.datasource.test1.maintenanceInterval = 60
mysql.datasource.test1.maxIdleTime = 60
mysql.datasource.test1.testQuery = select 1

配置数据库连接:

@ConfigurationProperties(prefix = "mysql.datasource.test")
public class DbConfig {
    private String url;
    private String username;
    private String password;
    private int minPoolSize;
    private int maxPoolSize;
    private int maxLifetime;
    private int borrowConnectionTimeout;
    private int loginTimeout;
    private int maintenanceInterval;
    private int maxIdleTime;
    private String testQuery;

省略set、get.....

}

/**
 * @description:
 * @author: LiShun
 * @time: 2019/12/17 16:53
 */
@Configuration
@MapperScan(basePackages = "com.ls.user1", sqlSessionTemplateRef = "testSqlSessionTemplate")
public class TestConfig {
    // 配置数据源
    @Primary
    @Bean(name = "testDataSource")
    public DataSource testDataSource(DbConfig testConfig) throws SQLException {
        MysqlXADataSource mysqlXaDataSource = new MysqlXADataSource();
        mysqlXaDataSource.setUrl(testConfig.getUrl());
        mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);
        mysqlXaDataSource.setPassword(testConfig.getPassword());
        mysqlXaDataSource.setUser(testConfig.getUsername());
        mysqlXaDataSource.setPinGlobalTxToPhysicalConnection(true);

        AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
        xaDataSource.setXaDataSource(mysqlXaDataSource);
        xaDataSource.setUniqueResourceName("testDataSource");

        xaDataSource.setMinPoolSize(testConfig.getMinPoolSize());
        xaDataSource.setMaxPoolSize(testConfig.getMaxPoolSize());
        xaDataSource.setMaxLifetime(testConfig.getMaxLifetime());
        xaDataSource.setBorrowConnectionTimeout(testConfig.getBorrowConnectionTimeout());
        xaDataSource.setLoginTimeout(testConfig.getLoginTimeout());
        xaDataSource.setMaintenanceInterval(testConfig.getMaintenanceInterval());
        xaDataSource.setMaxIdleTime(testConfig.getMaxIdleTime());
        xaDataSource.setTestQuery(testConfig.getTestQuery());
        return xaDataSource;
    }

    @Bean(name = "testSqlSessionFactory")
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("testDataSource") DataSource dataSource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        return bean.getObject();
    }

    @Bean(name = "testSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("testSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

service:

SpringBoot事务管理入门 _ JavaClub全栈架构师技术笔记

controller:

SpringBoot事务管理入门 _ JavaClub全栈架构师技术笔记

运行结果:

SpringBoot事务管理入门 _ JavaClub全栈架构师技术笔记

控制台:

SpringBoot事务管理入门 _ JavaClub全栈架构师技术笔记

加载atomikos信息。 

SpringBoot事务管理入门 _ JavaClub全栈架构师技术笔记 运行结果报错,并且数据库1、2都未添加数据,说明事务回滚了。

 

作者:知 行 合 一
来源链接:https://blog.csdn.net/qq_40313468/article/details/103578943

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/69195.html

分享给朋友:

“SpringBoot事务管理入门” 的相关文章

Spring Boot 中使用 @Transactional 注解配置事务管理

Spring Boot 中使用 @Transactional 注解配置事务管理

  可选的值有: 1. Propagation.REQUIRED 如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。 2. Propagation.SUPPORTS 如果当前存在事务,则加入该事务;如果...

springboot 事务统一配置

什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行...

springboot MongoDB 事务

前言 有玩过mongodb的朋友大概会知道mongodb4.0版本已经可以支持多文档副本集事务。而最新版本4.2更是支持分片事务,即真正的支持分布式事务。不过当时我使用mongodb,其最新版本为4.10,4.2版本还没发布,因此本文还是以4.0版本的副本集事务来讲解。...

SpringBoot jpa事务注解详解

SpringBoot jpa事务注解详解

@Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:annotation-driven /> 2.事务注解详...

Springboot事务配置

在一个config类名上面加入注解,用来开启事务 @EnableTransactionManagement 再加入一个BEAN类来配置事务 @Bean public DataSourceTransactionManager transactionMa...

浅谈SpringBoot事务处理

浅谈SpringBoot事务处理

什么是事务 所有数据访问技术都有事务机制,这些技术提供了API来开启事务、提交事务完成数据操作,或者在发生错误的时候回滚数据。 Spring采用统一的机制来处理不同的数据访问技术的事务,Spring的事务提供一个 PlatformTransactionManager...

springBoot service 事务注解@Transactional不起作用的解决

在springBoot使用事物时,发现事务并没有正常执行,没有进行回滚 @Transactional public void add(String companyName,String name) throws MyException{ compan...

springboot+mongodb @Transactional事务注解失效问题处理

问题场景 在一个@service方法上加上 @Transactional(rollbackFor = Exception.class)注解后,发现该方法中调用的另一个方法中抛出异常,在调用该方法之前的对表的修改未回滚,生效了。 问题代码:...

SpringBoot事务不生效可能存在的原因

1.mysql表必须支持事务:引擎为INNODB 2.SpringBoot启动事务@EnableTransactionManagement 3.方法上加注解@Transactional//默认只对RuntimeException起作用,可修改 4.方法必须为pu...

Spring Boot(十二)Spring Boot中数据库事务的使用

Spring Boot(十二)Spring Boot中数据库事务的使用

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!   标签:一个执着的职场程序...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。