Springboot druid配置多数据源

一、Pom.xml

<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>
<!--druid start-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

<!--druid end-->

二、application.yml

spring:
  datasource:
    druid:
      db1:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/XXXXXXXX
        username: root
        password: root

      db2:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3307/XXXXXXXX
        username: root
        password: sXFh_nz1wUnZ

      db-type: com.alibaba.druid.pool.DruidDataSource
      initial-size: 50
      min-idle: 50
      max-active: 100
      max-wait: 60000
      time-between-eviction-runs-millis: 60000

三、配置类

3.1 Db1DataSourceConfig .java

@Configuration
@MapperScan(basePackages = Db1DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "db1SqlSessionFactory")
public class Db1DataSourceConfig {

    static final String PACKAGE = "com.xxxxxxx.db1";
    static final String MAPPER_LOCATION = "classpath:mapper/db1/**.xml";

    @Value("${spring.datasource.druid.db1.url}")
    private String url;

    @Value("${spring.datasource.druid.db1.username}")
    private String user;

    @Value("${spring.datasource.druid.db1.password}")
    private String password;

    @Value("${spring.datasource.druid.db1.driver-class-name}")
    private String driverClass;


    @Bean(name = "db1DataSource")
    @Primary
    public DataSource db1DataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean
    @Primary
    public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }


    @Bean
    @Primary
    public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource db1DataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(db1DataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources(Db1DataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }
}

3.2 Db2DataSourceConfig.java

@Configuration
@MapperScan(basePackages = Db2DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "db2SqlSessionFactory")
public class Db2DataSourceConfig {

    static final String PACKAGE = "com.xxxxxx.db2";
    static final String MAPPER_LOCATION = "classpath:mapper/db2/**.xml";

    @Value("${spring.datasource.druid.db2.url}")
    private String url;

    @Value("${spring.datasource.druid.db2.username}")
    private String user;

    @Value("${spring.datasource.druid.db2.password}")
    private String password;

    @Value("${spring.datasource.druid.db2.driver-class-name}")
    private String driverClass;


    @Bean(name = "db2DataSource")
    public DataSource db2DataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean
    public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }


    @Bean
    public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource db2DataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(db2DataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources(Db2DataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }
}

四、启动类

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

版权声明:本文为qq_21389711原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。