日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實現(xiàn)

瀏覽:162日期:2023-03-22 09:27:42

Atomikos是一個為Java平臺提供增值服務(wù)的并且開源類事務(wù)管理器,如果將事務(wù)統(tǒng)一注冊到Atomikos中,則可以統(tǒng)一管理。常用于后臺管理系統(tǒng)的多數(shù)據(jù)庫操作。

多數(shù)據(jù)源的劃分方式

方式: a、按包名 b、按注解區(qū)分Springboot默認(rèn)集成事務(wù),只主要在方法上加上@Transactional即可,不需要開啟@EnableTransactionManagement注解如果多個數(shù)據(jù)庫,則每個方法都需要單獨設(shè)置事務(wù)管理器@Transactional(transactionManager = 'test2TransactionManager'),如果事務(wù)中含多數(shù)據(jù)源則無效。

Atomikos使用

1.依賴引入

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

2.多數(shù)據(jù)源配置文件

# Mysql 1mysql.datasource.test1.url = jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf-8mysql.datasource.test1.username = rootmysql.datasource.test1.password = rootmysql.datasource.test1.minPoolSize = 3mysql.datasource.test1.maxPoolSize = 25mysql.datasource.test1.maxLifetime = 20000mysql.datasource.test1.borrowConnectionTimeout = 30mysql.datasource.test1.loginTimeout = 30mysql.datasource.test1.maintenanceInterval = 60mysql.datasource.test1.maxIdleTime = 60# Mysql 2mysql.datasource.test2.url =jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=utf-8mysql.datasource.test2.username =rootmysql.datasource.test2.password =rootmysql.datasource.test2.minPoolSize = 3mysql.datasource.test2.maxPoolSize = 25mysql.datasource.test2.maxLifetime = 20000mysql.datasource.test2.borrowConnectionTimeout = 30mysql.datasource.test2.loginTimeout = 30mysql.datasource.test2.maintenanceInterval = 60mysql.datasource.test2.maxIdleTime = 60

3.配置代碼

@Data@ConfigurationProperties(prefix = 'mysql.datasource.test1')public class DBConfig1 { 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;}@Data@ConfigurationProperties(prefix = 'mysql.datasource.test2')public class DBConfig2 { 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;}@Configuration// basePackages 最好分開配置 如果放在同一個文件夾可能會報錯@MapperScan(basePackages = 'com.itmayiedu.test01', sqlSessionTemplateRef = 'testSqlSessionTemplate')public class MyBatisConfig1 { // 配置數(shù)據(jù)源 @Primary @Bean(name = 'testDataSource') public DataSource testDataSource(DBConfig1 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; } @Primary @Bean(name = 'testSqlSessionFactory') public SqlSessionFactory testSqlSessionFactory(@Qualifier('testDataSource') DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } @Primary @Bean(name = 'testSqlSessionTemplate') public SqlSessionTemplate testSqlSessionTemplate( @Qualifier('testSqlSessionFactory') SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }}@Configuration@MapperScan(basePackages = 'com.itmayiedu.test02', sqlSessionTemplateRef = 'test2SqlSessionTemplate')public class MyBatisConfig2 { // 配置數(shù)據(jù)源 @Bean(name = 'test2DataSource') public DataSource testDataSource(DBConfig2 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('test2DataSource'); 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 = 'test2SqlSessionFactory') public SqlSessionFactory testSqlSessionFactory(@Qualifier('test2DataSource') DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } @Bean(name = 'test2SqlSessionTemplate') public SqlSessionTemplate testSqlSessionTemplate( @Qualifier('test2SqlSessionFactory') SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }}

4.啟動加載配置

@EnableConfigurationProperties(value = { DBConfig1.class, DBConfig2.class })使用還是正常使用@Transactional方式

到此這篇關(guān)于SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Atomikos多數(shù)據(jù)源內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
鲁大师影院一区二区三区| 日韩成人三级| 亚洲激情社区| 99亚洲视频| 91麻豆精品激情在线观看最新| 日韩精品高清不卡| 久久av网站| 啪啪国产精品| 免费成人在线观看| 欧美啪啪一区| 精品欧美激情在线观看| 日韩精品中文字幕一区二区| 国产成人精品一区二区三区免费| 欧美日韩亚洲在线观看| 日本成人在线网站| 人人草在线视频| 午夜在线精品| 欧美精品中文| 欧美一区二区三区高清视频| 亚洲区第一页| 日韩欧美一区免费| 中文视频一区| 日韩国产欧美一区二区| 中文字幕视频精品一区二区三区| 国产经典一区| 日韩一级欧洲| 精品五月天堂| 日本 国产 欧美色综合| 国产伊人久久| 亚洲精品观看| 成人精品中文字幕| 91精品国产自产精品男人的天堂 | 精品一区二区三区中文字幕| 一本色道久久精品| 高清一区二区三区av| 亚洲免费福利一区| 国产v日韩v欧美v| 日韩av中文字幕一区| 九一精品国产| 精品一二三区| 国产欧美日韩影院| 尤物网精品视频| 亚洲国产成人二区| 国产精品xxx| 欧美一区成人| 视频一区在线视频| 亚洲国产专区校园欧美| 国产精品一区二区av交换| 亚洲精品精选| 国产模特精品视频久久久久| 欧美亚洲激情| 国产理论在线| 另类综合日韩欧美亚洲| 日韩中文av| 亚洲免费婷婷| 亚洲激情中文在线| 久久美女性网| 神马久久午夜| 国产白浆在线免费观看| 麻豆国产一区| 久久精品超碰| 婷婷五月色综合香五月| 另类国产ts人妖高潮视频| 国产一区日韩一区| 国户精品久久久久久久久久久不卡| 精品亚洲a∨| 免费在线观看一区| 欧美交a欧美精品喷水| 国产美女亚洲精品7777| 91精品一区| 清纯唯美亚洲综合一区| 91精品麻豆| 久久国产乱子精品免费女| 五月激激激综合网色播| 亚洲欧美在线综合| 日韩欧美精品一区二区综合视频| 热久久免费视频| 日韩中文字幕在线一区| 青青青国产精品| 国产乱人伦精品一区| 欧美aaaaaa午夜精品| 国产成人精品一区二区三区在线| 成人高清一区| 久久国产亚洲精品| 欧美日韩在线二区| 欧美另类专区| 亚洲深夜福利在线观看| 蜜桃免费网站一区二区三区| 中文一区一区三区免费在线观 | 久久狠狠久久| 久久免费影院| 国产精品成人一区二区不卡| 国产精品久久久久av电视剧| 久久国产主播| 丝袜美腿亚洲色图| 日本不卡视频在线| 国产欧美在线| 国产美女高潮在线观看| 激情综合自拍| 亚洲日本国产| 国产日本久久| 国产精品原创| 老司机精品久久| 国产精品视频一区二区三区综合| 精品一区二区三区中文字幕视频| 日韩中文影院| 亚洲色图国产| 国产一区国产二区国产三区| 偷拍欧美精品| 国产亚洲第一伦理第一区| 中文字幕在线免费观看视频| 亚洲自拍另类| 国产精品jk白丝蜜臀av小说| 欧美成人基地| 欧美一区成人| 久久久一本精品| 中文字幕av一区二区三区人| 久久99久久久精品欧美| 国产在线不卡| 欧美日韩a区| 激情婷婷欧美| 国产美女久久| 在线亚洲欧美| 麻豆91在线播放| 三级一区在线视频先锋| 精品一区不卡| 亚洲午夜久久| 正在播放日韩精品| 欧美日韩调教| 欧美日韩免费观看一区=区三区| 国产视频一区二| 国产手机视频一区二区 | 香蕉久久国产| 九色porny丨国产首页在线| 日韩精品五月天| 亚洲精品一区二区妖精| 国产精品115| 模特精品在线| 人人香蕉久久| 国产麻豆精品久久| 石原莉奈一区二区三区在线观看| 国产精品s色| 国产亚洲毛片在线| 成人国产精品一区二区网站| 视频一区欧美日韩| 91av亚洲| 国产福利一区二区三区在线播放| 国产综合视频| 精品国产亚洲一区二区三区在线 | 国产精品麻豆成人av电影艾秋| 狠狠爱www人成狠狠爱综合网| 精品视频高潮| 亚洲精品乱码日韩| 欧美91视频| 精品亚洲a∨| 日韩av二区在线播放| 国产综合亚洲精品一区二| 国产欧美视频在线| 亚洲国内精品| 国内精品伊人| 久久激五月天综合精品| 影音先锋国产精品| 日本高清不卡一区二区三区视频| 国产亚洲一区二区三区啪| 欧美日韩国产一区二区三区不卡| 欧美激情日韩| 日本a级不卡| 男女男精品视频网| 综合激情婷婷| 91久久久久| 99精品视频在线| 四虎8848精品成人免费网站| 国产乱码精品一区二区三区亚洲人| 在线综合亚洲| 亚洲一级网站| 美女一区网站| 精品亚洲成人| 国产精品传媒麻豆hd| 亚洲区第一页| 首页国产欧美久久| 性色一区二区| 久久一二三区| 丝袜美腿高跟呻吟高潮一区| 在线国产一区| 五月婷婷亚洲| 久久人人97超碰国产公开结果| 欧美韩日一区| 日韩成人精品一区二区| 精品免费av一区二区三区| 国产精品自在| 久久国产精品免费一区二区三区| 一区二区三区网站| 亚洲综合小说| 日韩中文字幕亚洲一区二区va在线| 亚洲大全视频| 欧美精品自拍| 亚洲欧美日本国产| 日韩国产欧美在线视频| 综合激情网...| 日韩精品三级|