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

Springboot中怎么連接多數(shù)據(jù)源

今天就跟大家聊聊有關(guān)Spring boot 中怎么連接多數(shù)據(jù)源,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)擁有10多年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),對于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、app開發(fā)定制、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、空間域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

1.application.yml中添加兩個datasource

server:
 port: 8080
spring:
 application:
  name: king
 datasource:
  master:
   type: com.zaxxer.hikari.HikariDataSource
   jdbc-url: jdbc:MySQL://localhost:3306/king?useUnicode=yes&characterEncoding=UTF-8&serverTimezone=UTC
   driver-class-name: com.mysql.cj.jdbc.Driver
   username: root
   password: 123456
   idle-timeout: 10000
   minimum-idle: 1
   maximum-pool-size: 10
   pool-name: master
   auto-commit: false
   connection-test-query: SELECT 1
  slave:
   type: com.zaxxer.hikari.HikariDataSource
   jdbc-url: jdbc:mysql://localhost:3306/king?useUnicode=yes&characterEncoding=UTF-8&serverTimezone=UTC
   driver-class-name: com.mysql.cj.jdbc.Driver
   username: root
   password: 123456
   idle-timeout: 10000
   minimum-idle: 1
   maximum-pool-size: 10
   pool-name: slave
   auto-commit: false
   connection-test-query: SELECT 1

2.手動初始化數(shù)據(jù)源masterDataSource

package cn.bj.king.config;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/**
* @author ARongking
* @date 2019-03-28
*/
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {"cn.bj.king.mapper.master"},
    sqlSessionFactoryRef = "masterSqlSessionFactory")
public class WriteDataSourceConfig {

  @Bean(name = "masterDataSource")
  @Primary
  @Qualifier("masterDataSource")
  public DataSource masterDataSource(@Qualifier("masterHikariConfig")HikariConfig hikariConfig) {
    System.out.println("實(shí)例化主庫");
    HikariDataSource hikariDataSource=new HikariDataSource(hikariConfig);
    return hikariDataSource;
  }
  /**
  * 配置連接池信息
  * @return
  */
  @ConfigurationProperties(prefix = "spring.datasource.master")
  @Bean("masterHikariConfig")
  public HikariConfig masterHikariConfig(){
    HikariConfig hikariConfig=new HikariConfig();
    return hikariConfig;
  }
  /**
   * SqlSessionFactory配置
   *
   * @return
   * @throws Exception
   */
  @Bean(name = "masterSqlSessionFactory")
  @Primary
  public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    sqlSessionFactoryBean.setDataSource(dataSource);
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    // 配置mapper文件位置
    sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/master/*.xml"));
    sqlSessionFactoryBean.setTypeAliasesPackage("cn.bj.king.entity");
    return sqlSessionFactoryBean.getObject();
  }

  /**
   * 配置事物管理器
   *
   * @return
   */
  @Bean(name = "masterTransactionManager")
  @Primary
  public DataSourceTransactionManager masterTransactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
    DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
    dataSourceTransactionManager.setDataSource(dataSource);
    return dataSourceTransactionManager;
  }
}

3.手動初始化數(shù)據(jù)源ReadDataSource

package cn.bj.king.config;
import com.github.pagehelper.PageInterceptor;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {"cn.bj.king.mapper.slave"},
    sqlSessionFactoryRef = "slaveSqlSessionFactory")
public class ReadDataSourceConfig {
  @Autowired
  Environment environment;

  @Bean(name = "slaveDataSource")
  @Qualifier("slaveDataSource")
  public DataSource slaveDataSource(@Qualifier("slaveHikariConfig")HikariConfig hikariConfig) {
    System.out.println("實(shí)例化從庫");
    HikariDataSource hikariDataSource=new HikariDataSource(hikariConfig);
    return hikariDataSource;
  }

  /**
   * 配置連接池信息
   * @return
   */
  @ConfigurationProperties(prefix = "spring.datasource.slave")
  @Bean("slaveHikariConfig")
  public HikariConfig slaveHikariConfig(){
    HikariConfig hikariConfig=new HikariConfig();
    return hikariConfig;
  }

  /**
   * SqlSessionFactory配置
   *
   * @return
   * @throws Exception
   */
  @Bean(name = "slaveSqlSessionFactory")
  public SqlSessionFactory slaveSqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    sqlSessionFactoryBean.setDataSource(dataSource);
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    // 配置mapper文件位置
    sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/slave/*.xml"));
    sqlSessionFactoryBean.setTypeAliasesPackage("cn.bj.king.entity");
    return sqlSessionFactoryBean.getObject();
  }
  /**
   * 配置事物管理器
   *
   * @return
   */
  @Bean(name = "slaveTransactionManager")
  public DataSourceTransactionManager slaveTransactionManager(@Qualifier("slaveDataSource") DataSource dataSource) {
    DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
    dataSourceTransactionManager.setDataSource(dataSource);
    return dataSourceTransactionManager;
  }
}

4.測試啟動是否正常初始化master和slave 兩個數(shù)據(jù)源

5.這里需要注意幾個地方:

  • 配置數(shù)據(jù)庫連接池的時候,如果不是手動設(shè)置HikariConfig ,即通過Environment 去一個個獲取數(shù)據(jù)庫連接池在yml中的配置的話,數(shù)據(jù)庫連接池的(idle-timeout,minimum-idle, maximum-pool-size,pool-name,auto-commit,connection-test-query)等,一定要與slave節(jié)點(diǎn)平級,不然 HikariConfig 是讀取不到這些信息的。

  • 如果手動賦值HikariConfig 的話,那就沒有什么限制了,寫到哪里都行,只需要用Environment 去讀取配置文件的值,手動設(shè)置到HikariConfig 就行了。

看完上述內(nèi)容,你們對Spring boot 中怎么連接多數(shù)據(jù)源有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章標(biāo)題:Springboot中怎么連接多數(shù)據(jù)源
標(biāo)題網(wǎng)址:http://aaarwkj.com/article22/iioejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、小程序開發(fā)、全網(wǎng)營銷推廣網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)

廣告

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

手機(jī)網(wǎng)站建設(shè)
国语对白刺激真实精品| 午夜在线观看欧美福利| 一区二区在线视频免费播放| 国偷蜜桃av一区二区三区| 国产丝袜肉丝在线播放| 亚洲一区成人精品在线| 性色视频一区二区三区| 九九热精品在线观看视频| 欧美精品久久91九色| 中文字幕丝袜精品久久| 色悠悠色综合视频在线| 欧洲精品久久久久久| 日韩中文不卡人成在线视频| 欧美午夜福利一级高清| 国产精品高清另类一区二区三区| 在线观看免费视频成人播放| 亚洲国产熟对白剧情一区二区| 国产一级二级三级在线电影| 亚洲另类欧美日韩中文字幕| 99亚洲综合一区二区三区| 免费国产污在线观看网站| 91综合午夜精品福利| 视频一二区免费在线观看| 日韩电影在线播放中文字幕| 欧美亚洲成人免费电影| 日日躁夜夜躁久久狠狠躁| 成年人网站一级黄色免费| 精品蜜臀国产av一区二区| 亚洲一区二区精品免费视频| 日韩精品一区伦理视频| 精品久久中文字幕久久av| 国内传媒视频免费观看| 亚洲女人天堂av在线| 欧美日韩一级性生活片| 日本韩国一区二区精品| 中文字慕日韩精品欧美一区 | 大胆丰满邻居少妇在线观看| 黄色成人av在线网站| 日本精品免费专区在线观看| 99热这里只有精品最新| 97全国免费观看视频|