iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >springboot-jta-atomikos多数据源事务管理如何实现
  • 608
分享到

springboot-jta-atomikos多数据源事务管理如何实现

2023-06-29 12:06:45 608人浏览 独家记忆
摘要

这篇文章主要介绍“SpringBoot-jta-atomikos多数据源事务管理如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot-jta-atomikos多数据源事务管理如

这篇文章主要介绍“SpringBoot-jta-atomikos多数据源事务管理如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot-jta-atomikos多数据源事务管理如何实现”文章能帮助大家解决问题。

    项目目录结构

    springboot-jta-atomikos多数据源事务管理如何实现

     实现

    1.添加依赖 pom.xml

    <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-jta-atomikos</artifactId></dependency>

    2.配置数据库连接信息 application.properties

    #atomikos测试spring.datasource.test1.url=jdbc:mysql://127.0.0.1:3306/test1?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghaispring.datasource.test1.user=rootspring.datasource.test1.passWord=arsenalspring.datasource.test2.url=jdbc:Mysql://127.0.0.1:3306/test2?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghaispring.datasource.test2.user=rootspring.datasource.test2.password=arsenal

    3.创建多数据源 DBAtomikosConfig.java

    package com.llq.atomikos.config;import com.atomikos.icatch.jta.UserTransactionImp;import com.atomikos.icatch.jta.UserTransactionManager;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.transaction.jta.JtaTransactionManager;import javax.sql.DataSource;import javax.transaction.UserTransaction;import java.util.Properties;@Configurationpublic class DBAtomikosConfig {    //--------------------数据源1--------------------    @ConfigurationProperties(prefix = "spring.datasource.test1")    @Bean    public Properties testOneProperties() {        return new Properties();    }    @Bean(name = "testOneDataSource")    @Primary    public DataSource testOneDataSource() {        AtomikosDataSourceBean ds = new AtomikosDataSourceBean();        Properties prop = testOneProperties();        ds.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource");        ds.setUniqueResourceName("testOne");        ds.setXaProperties(prop);        return ds;    }    @Bean    @Primary    public JdbcTemplate testOneJdbcTemplate(@Qualifier("testOneDataSource") DataSource dataSource) {        return new JdbcTemplate(dataSource);    }    //--------------------数据源2--------------------    @ConfigurationProperties(prefix = "spring.datasource.test2")    @Bean    public Properties testTwoProperties() {        return new Properties();    }    @Bean(name = "testTwoDataSource")    public DataSource testTwoDataSource() {        AtomikosDataSourceBean ds = new AtomikosDataSourceBean();        Properties prop = testTwoProperties();        ds.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource");        ds.setUniqueResourceName("testTwo");        ds.setXaProperties(prop);        return ds;    }    @Bean    public JdbcTemplate testTwoJdbcTemplate(@Qualifier("testTwoDataSource") DataSource dataSource) {        return new JdbcTemplate(dataSource);    }    //--------------------配置spring的JtaTransactionManager,底层委派给atomikos进行处理--------------------    @Bean    public JtaTransactionManager jtaTransactionManager () {        UserTransactionManager userTransactionManager = new UserTransactionManager();        UserTransaction userTransaction = new UserTransactionImp();        return new JtaTransactionManager(userTransaction, userTransactionManager);    }}

    4.测试事务类 TestAtomikos.java

    package com.llq.atomikos.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;@Servicepublic class TestAtomikos implements ITest{    @Qualifier("testOneJdbcTemplate")    @Autowired    private JdbcTemplate testOneJdbcTemplate;    @Qualifier("testTwoJdbcTemplate")    @Autowired    private JdbcTemplate testTwoJdbcTemplate;        @Transactional(rollbackFor = Exception.class, value = "jtaTransactionManager")    public void test() {        testOneJdbcTemplate.execute("insert into user (name, age) values ('张三', 18);");        testTwoJdbcTemplate.execute("insert into user (name, age) values ('李四', 20);");    }        @Transactional(rollbackFor = Exception.class, value = "jtaTransactionManager")    public void testByException() {        testOneJdbcTemplate.execute("insert into user (name, age) values ('张三', 18);");        testTwoJdbcTemplate.execute("insert into user (name, age) values ('李四', 20);");        int i = 1/0;    }}

    5.测试 SpringbootAtomikosApplicationTests.java

        //使用atomikos    private static Class CLS = TestAtomikos.class;    @Autowired    ApplicationContext applicationContext;    @Test    public void testByException() {        ITest test = (ITest) applicationContext.getBean(CLS);        test.testByException();    }

    测试结果

    执行错误

    springboot-jta-atomikos多数据源事务管理如何实现

    数据库test1 user表没有记录

    springboot-jta-atomikos多数据源事务管理如何实现

    数据库test2 user表没有记记录

    springboot-jta-atomikos多数据源事务管理如何实现

    关于“springboot-jta-atomikos多数据源事务管理如何实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: springboot-jta-atomikos多数据源事务管理如何实现

    本文链接: https://www.lsjlt.com/news/324667.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • springboot-jta-atomikos多数据源事务管理实现
      目录背景源码地址项目目录结构 实现1.添加依赖 pom.xml2.配置数据库连接信息 application.properties3.创建多数据源 DBAtomikosCo...
      99+
      2024-04-02
    • springboot-jta-atomikos多数据源事务管理如何实现
      这篇文章主要介绍“springboot-jta-atomikos多数据源事务管理如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot-jta-atomikos多数据源事务管理如...
      99+
      2023-06-29
    • SpringBoot2使用JTA组件实现基于JdbcTemplate多数据源事务管理(亲测好用)
      目录一、JTA组件简介什么是JTA什么是XA协议二、SpringBoot整合JTA1、核心依赖2、环境配置3、jta组件配置类4、创建一个Service实现,模拟两种不同的情况。5、...
      99+
      2024-04-02
    • java SpringBoot 分布式事务的解决方案(JTA+Atomic+多数据源)
      目录前言一、项目依赖二、数据源配置三、数据源的注册四、配置数据源对应的sqlSessionFactory五、测试接口六、建立JtaTestContoller.java七、在test....
      99+
      2024-04-02
    • springboot+mybatisplus+druid如何实现多数据源+分布式事务
      这篇文章主要介绍springboot+mybatisplus+druid如何实现多数据源+分布式事务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  jdk环境:1.8  springboot:2.1.3.RELEA...
      99+
      2023-06-02
    • springboot+mybatis实现多数据源
      1. 前言 最近做项目碰到了一个需要连4个不同数据库的需求,其中db1、db2表结构都不相同;另外两个数据库same_db_private、same_db_public表结构完全相同,一个对内一个对外...
      99+
      2023-09-11
      mybatis spring boot java
    • 在springboot中使用mybatis如何实现多数据源
      这篇文章给大家介绍在springboot中使用mybatis如何实现多数据源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务。我们...
      99+
      2023-05-31
      springboot mybatis 多数据源
    • SpringBoot如何搭建多数据源
      这篇文章主要为大家展示了“SpringBoot如何搭建多数据源”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot如何搭建多数据源”这篇文章吧。首先我们建立两个数据库(可以不在同一...
      99+
      2023-06-21
    • springboot如何配置多数据源
      在Spring Boot中配置多数据源可以通过创建多个DataSource bean,并使用@Primary和@Qualifier注...
      99+
      2024-04-08
      springboot
    • Springboot实现多数据源切换详情
      目录1. 实现效果1.1 controller1.2 mybatis.xml1.3 application.yml1.4 启动类2. 注解2.1 @Router3. 分库策略3.1 ...
      99+
      2024-04-02
    • SpringBoot实现多数据源的切换实践
      目录前言工程结构编码实现yml文件主数据源MainDatasourceProperties其他数据源DynamicDatasourceProperties数据源配置类Datasour...
      99+
      2024-04-02
    • SpringBoot多数据源切换怎么实现
      本篇内容主要讲解“SpringBoot多数据源切换怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot多数据源切换怎么实现”吧!配置文件(YML)spring: ...
      99+
      2023-06-30
    • springboot+mybatis实现mysql和oracle多数据源
      1.aop+注解方式 在实际项目中很多时候会涉及到多个数据库的访问,或者数据库读写分离的形式。 下面通过使用 Aspect+注解来实现mysql+oracle的多数据源配置(注意:事务一致性未提供) 首先要去oracle官网下载ojdbc的...
      99+
      2023-09-05
      spring boot mybatis mysql oracle 后端
    • Spring Boot多数据源及其事务管理配置方法
      准备工作先给我们的项目添加Spring-JDBC依赖和需要访问数据库的驱动依赖。配置文件spring.datasource.prod.driverClassName=com.mysql.jdbc.Driverspring.datasourc...
      99+
      2023-05-31
      spring boot 多数据源
    • SpringBoot基于AbstractRoutingDataSource如何实现多数据源动态切换
      本文小编为大家详细介绍“SpringBoot基于AbstractRoutingDataSource如何实现多数据源动态切换”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot基于AbstractRoutingDataSour...
      99+
      2023-06-30
    • SpringBoot +DynamicDataSource如何切换多数据源
      小编给大家分享一下SpringBoot +DynamicDataSource如何切换多数据源,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!刚开始用一个数...
      99+
      2023-06-26
    • springboot中如何配置多数据源
      这期内容当中小编将会给大家带来有关springboot中如何配置多数据源,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、建库建表1.1 创建数据库db1和数据库db21.2 在数据库db1中创建表db1...
      99+
      2023-06-15
    • SpringBoot怎么实现多数据源的切换
      这篇文章主要介绍“SpringBoot怎么实现多数据源的切换”,在日常操作中,相信很多人在SpringBoot怎么实现多数据源的切换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot怎么实现多...
      99+
      2023-06-29
    • springboot+springJdbc+postgresql 实现多数据源的配置
      背景 最近公司在服务拆迁,接口转移,相同的功能接口到要迁移到对应的服务中,因为时间比较赶,别问为什么没给时间,没人,没资源,但是活还是得干的,为了减少工作量和稳妥的需要分两步走 ...
      99+
      2024-04-02
    • SpringBoot多数据源切换实现代码(Mybaitis)
      目录前言配置文件(YML)核心代码DynamicDataSourceDynamicDataSourceServiceDynamicDataSourceConfig加载YML数据库配置...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作