多数据源,同时使用Mybatis-Plus和Druid时的坑

如果你要使用Mybatis-plus的多数据源功能,首先要引入以下依赖:

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.4</version>
        </dependency>

如果你要使用Druid,要引入:

		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

在这里我们使用MySQL数据库,引入驱动:

		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>5.1.6</scope>
        </dependency>

我们在application.yml文件里进行多数据源配置:

spring:
  datasource:
    dynamic:
      primary: master
      datasource:
        master:
          url: jdbc:mysql://xx:3306/DD.contract
          username: 
          password: 
          driver-class-name: com.mysql.jdbc.Driver
        slave:
          url: jdbc:mysql://:3306/ctpc
          username: 
          password: 
          driver-class-name: com.mysql.jdbc.Driver
      druid:
        keep-alive: true

其中的primary属性表明了我们要以下面哪一个数据库为主,主数据库在不进行 @DS切换的时候默认使用。

然后你启动就会发现,提示你根本没有配置数据库!

这应该是因为Druid的自动配置识别不到以上配置。于是我们选择关闭Druid的自动配置。

@SpringBootApplication(
        scanBasePackages ={"com.ynunicom.dc.dingdingcontractapp"},
        exclude = DruidDataSourceAutoConfigure.class
)
public class DingdingContractAppApplication {
    public static void main(String[] args) {
        SpringApplication.run(DingdingContractAppApplication.class, args);
    }
}

我们把DruidDataSourceAutoConfigure.class给排除在外,我们刚刚引入的dynamic-datasource-spring-boot-starter里面所携带的DynamicDataSourceAutoConfiguration就生效了,它里面有这个东西:
多数据源,同时使用Mybatis-Plus和Druid时的坑_第1张图片
如果你不把Druid的自动配置关闭,则这个东西会被DruiddataSource给覆盖,以下是Druid的自动配置类DruidDataSourceAutoConfigure中的内容:
多数据源,同时使用Mybatis-Plus和Druid时的坑_第2张图片
去除Druid的自动配置后,服务就可以正常跑起来了。

你可能感兴趣的:(java,spring,boot,mybatis)