欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringBoot2中怎么使用JTA組件實(shí)現(xiàn)多數(shù)據(jù)源事務(wù)管理-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)SpringBoot2中怎么使用JTA組件實(shí)現(xiàn)多數(shù)據(jù)源事務(wù)管理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

多倫ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

一、JTA組件簡(jiǎn)介

1、JTA基本概念

JTA即Java-Transaction-API,JTA允許應(yīng)用程序執(zhí)行分布式事務(wù)處理,即在兩個(gè)或多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)資源上訪問并且更新數(shù)據(jù)。JDBC驅(qū)動(dòng)程序?qū)TA的支持極大地增強(qiáng)了數(shù)據(jù)訪問能力。

XA協(xié)議是數(shù)據(jù)庫(kù)層面的一套分布式事務(wù)管理的規(guī)范,JTA是XA協(xié)議在Java中的實(shí)現(xiàn),多個(gè)數(shù)據(jù)庫(kù)或是消息廠商實(shí)現(xiàn)JTA接口,開發(fā)人員只需要調(diào)用SpringJTA接口即可實(shí)現(xiàn)JTA事務(wù)管理功能。

JTA事務(wù)比JDBC事務(wù)更強(qiáng)大。一個(gè)JTA事務(wù)可以有多個(gè)參與者,而一個(gè)JDBC事務(wù)則被限定在一個(gè)單一的數(shù)據(jù)庫(kù)連接。下列任一個(gè)Java平臺(tái)的組件都可以參與到一個(gè)JTA事務(wù)中

2、分布式事務(wù)

分布式事務(wù)(DistributedTransaction)包括事務(wù)管理器(TransactionManager)和一個(gè)或多個(gè)支持 XA 協(xié)議的資源管理器 ( Resource Manager )。

資源管理器是任意類型的持久化數(shù)據(jù)存儲(chǔ)容器,例如在開發(fā)中常用的關(guān)系型數(shù)據(jù)庫(kù):MySQL,Oracle等,消息中間件RocketMQ、RabbitMQ等。

事務(wù)管理器提供事務(wù)聲明,事務(wù)資源管理,同步,事務(wù)上下文傳播等功能,并且負(fù)責(zé)著所有事務(wù)參與單元者的相互通訊的責(zé)任。JTA規(guī)范定義了事務(wù)管理器與其他事務(wù)參與者交互的接口,其他的事務(wù)參與者與事務(wù)管理器進(jìn)行交互。

二、SpringBoot整合JTA

項(xiàng)目整體結(jié)構(gòu)圖

SpringBoot2中怎么使用JTA組件實(shí)現(xiàn)多數(shù)據(jù)源事務(wù)管理

1、核心依賴

<!--SpringBoot核心依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--JTA組件核心依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>

2、環(huán)境配置

這里jtaManager的配置,在日志輸出中非常關(guān)鍵。

spring:
  jta:
    transaction-manager-id: jtaManager
  # 數(shù)據(jù)源配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    data01:
      driverClassName: com.mysql.jdbc.Driver
      dbUrl: jdbc:mysql://localhost:3306/data-one
      username: root
      password: 000000
    data02:
      driverClassName: com.mysql.jdbc.Driver
      dbUrl: jdbc:mysql://localhost:3306/data-two
      username: root
      password: 000000

3、核心容器

這里兩個(gè)數(shù)據(jù)庫(kù)連接的配置手法都是一樣的,可以在源碼中自行下載閱讀。基本思路都是把數(shù)據(jù)源交給JTA組件來(lái)統(tǒng)一管理,方便事務(wù)的通信。

數(shù)據(jù)源參數(shù)

@Component
@ConfigurationProperties(prefix = "spring.datasource.data01")
public class DruidOneParam {
    private String dbUrl;
    private String username;
    private String password;
    private String driverClassName;
}

JTA組件配置

package com.jta.source.conifg;
@Configuration
@MapperScan(basePackages = {"com.jta.source.mapper.one"},sqlSessionTemplateRef = "data01SqlSessionTemplate")
public class DruidOneConfig {
    private static final Logger LOGGER = LoggerFactory.getLogger(DruidOneConfig.class) ;
    @Resource
    private DruidOneParam druidOneParam ;
    @Primary
    @Bean("dataSourceOne")
    public DataSource dataSourceOne () {
        // 設(shè)置數(shù)據(jù)庫(kù)連接
        MysqlXADataSource mysqlXADataSource = new MysqlXADataSource();
        mysqlXADataSource.setUrl(druidOneParam.getDbUrl());
        mysqlXADataSource.setUser(druidOneParam.getUsername());
        mysqlXADataSource.setPassword(druidOneParam.getPassword());
        mysqlXADataSource.setPinGlobalTxToPhysicalConnection(true);
        // 事務(wù)管理器
        AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean();
        atomikosDataSourceBean.setXaDataSource(mysqlXADataSource);
        atomikosDataSourceBean.setUniqueResourceName("dataSourceOne");
        return atomikosDataSourceBean;
    }
    @Primary
    @Bean(name = "sqlSessionFactoryOne")
    public SqlSessionFactory sqlSessionFactoryOne(
            @Qualifier("dataSourceOne") DataSource dataSourceOne) throws Exception{
        // 配置Session工廠
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSourceOne);
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resolver.getResources("classpath*:/dataOneMapper/*.xml"));
        return sessionFactory.getObject();
    }
    @Primary
    @Bean(name = "data01SqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplate(
            @Qualifier("sqlSessionFactoryOne") SqlSessionFactory sqlSessionFactory) {
        // 配置Session模板
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

4、測(cè)試對(duì)比

這里通過(guò)兩個(gè)方法測(cè)試結(jié)果做對(duì)比,在兩個(gè)數(shù)據(jù)源之間進(jìn)行數(shù)據(jù)操作時(shí),只需要在接口方法加上 @Transactional注解即可,這樣保證數(shù)據(jù)在兩個(gè)數(shù)據(jù)源間也可以保證一致性。

@Service
public class TransferServiceImpl implements TransferService {
    @Resource
    private UserAccount01Mapper userAccount01Mapper ;
    @Resource
    private UserAccount02Mapper userAccount02Mapper ;
    @Override
    public void transfer01() {
        userAccount01Mapper.transfer("jack",100);
        System.out.println("i="+1/0);
        userAccount02Mapper.transfer("tom",100);
    }
    @Transactional
    @Override
    public void transfer02() {
        userAccount01Mapper.transfer("jack",200);
        System.out.println("i="+1/0);
        userAccount02Mapper.transfer("tom",200);
    }
}

上述就是小編為大家分享的SpringBoot2中怎么使用JTA組件實(shí)現(xiàn)多數(shù)據(jù)源事務(wù)管理了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

標(biāo)題名稱:SpringBoot2中怎么使用JTA組件實(shí)現(xiàn)多數(shù)據(jù)源事務(wù)管理-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://aaarwkj.com/article14/dohgge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站維護(hù)、網(wǎng)站策劃、App設(shè)計(jì)自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
日本精品女优一区二区三区四区| 色婷婷av一区二区三区张| 国产亚洲精品国产福利久久| 日韩欧美另类精品在线| 精品国产免费第一区二区三| 成人精品国产一区二区| 一区二区三区日韩激情| 中文字幕日韩激情欧美一区| 最新免费观看男女啪啪视频| 日韩精品少妇一区二区在线看| 午夜影院网站在线看黄| 国产精品亚洲欧美日韩综合| 国产精品一级自拍视频| 精品日韩电影在线观看| 精品国产av一区蜜臀av| 成人精品午夜福利视频| 亚洲日日夜夜噜噜爽爽| 日韩欧美黄色三级视频| 综合久久—本道中文字幕| 日韩精品中文字幕免费人妻| 调教亚洲另类唯美第二页| 丝袜美腿蜜汁一龙二凤| 亚洲男人天堂中文字幕| 欧美成人一区二区三区片| 国产亚洲成人精品久久| 久久精品国产一区二区三| 国产三级三级三级免费看| 国产国产成年年人免费看片| 久久中文字幕日韩精品| 亚洲日本成人av在线观看| 在线一区二区三区成人观看| 亚洲精品综合在线二区| 黄色av手机在线观看| 在线播放欧美视频91| 国产三级自拍视频在线观看网站| 91九色视频免费观看| 我的极品小姨在线观看| av毛片在线观看地址| 国内熟妇人妻色在线三级| 国产婷婷成人久久av免费高清| 99国产精品的热久久|