spingBoot配置多個數據源之分包方案

在業務中如果一個項目要連接多個數據庫查
#配置多個數據源
spring.datasource.auth.jdbc-url=jdbc:mysql://rm-..rds.aliyuncs.com:3306/test1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
spring.datasource.secret.username=
spring.datasource.secret.password=
spring.datasource.auth.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.auth.type=com.alibaba.druid.pool.DruidDataSource



spring.datasource.secret.jdbc-url=jdbc:mysql://rm-.rds.aliyuncs.com:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
spring.datasource.secret.username=
spring.datasource.secret.password=
spring.datasource.secret.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.secret.type=com.alibaba.druid.pool.DruidDataSource


#第一個數據源



/**
 * createUser:JAVA_TOM
 * FileName: AuthDataSourceConfig
 * Author:   14562
 * Date:     2019/9/17 10:45
 * Description: 第一個數據庫
 */
package com.shuhe360.auth.shuhe_secret.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
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.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
//配置你的mapper包路徑,意味着此路徑下將使用此數據源  sqlSessionFactoryRef 請保證此名字唯一信
@MapperScan(basePackages = "com.shuhe360.auth.shuhe_secret.mapper.auth"
        ,sqlSessionFactoryRef = "authSqlSessionFactory"
)
public class AuthDataSourceConfig {
    @Bean(name="authDataSource")
    //你的配置文件中的前綴
    @ConfigurationProperties(prefix = "spring.datasource.auth")
    public DataSource authDataSource() {
        return DataSourceBuilder.create().build();
    }
    //與上方sqlSessionFactoryRef名字相同
    @Bean(name = "authSqlSessionFactory")
    public SqlSessionFactory authSqlSessionFactory(@Qualifier("authDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
        //配置mapper的路徑
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/auth/*.xml"));
        return bean.getObject();
    }
    @Bean("authSqlSessionTemplate")
    public SqlSessionTemplate authSqlSessionTemplate(
            @Qualifier("authSqlSessionFactory") SqlSessionFactory sessionfactory) {
        return new SqlSessionTemplate(sessionfactory);
    }

}
#第二個數據源
/**
 * createUser:JAVA_TOM
 * FileName: SecretDataSourceConfig
 * Author:   14562
 * Date:     2019/9/17 10:46
 * Description: 第二個數據庫
 */
package com.shuhe360.auth.shuhe_secret.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
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 javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.shuhe360.auth.shuhe_secret.mapper.secret"
        ,sqlSessionFactoryRef = "secretSqlSessionFactory"
)
public class SecretDataSourceConfig {
   //Primary 表示默認數據源
    @Bean(name="secretDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.secret")
    @Primary
    public DataSource secretDataSource() {
        return DataSourceBuilder.create().build();
    }
    //Primary 表示默認數據源
    @Bean(name = "secretSqlSessionFactory")
    @Primary
    public SqlSessionFactory secretSqlSessionFactory(@Qualifier("secretDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/secret/*.xml"));
        return bean.getObject();
    }
   //Primary 表示默認數據源
    @Bean("secretSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate secretSqlSessionTemplate(
            @Qualifier("secretSqlSessionFactory") SqlSessionFactory sessionfactory) {
        return new SqlSessionTemplate(sessionfactory);
    }
}

![Image text](E:\working space\notes\SpringBoot\1568897483(1).jpg)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章