天天看点

SpringBoot 引入dynamic和druid找不到数据源问题

分享知识 传递快乐

因为项目需要的原因在 pom.xml 中引入:

<!-- 多数据源 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</dependency>

<!-- druid 官方 starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
</dependency>      

但在项目启动时提示找不数据源,出现以下错误提示:

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (the profiles test are currently active).      

数据源明明已经正确配置了,怎么会出现找不到数据源?

原因

SpringBoot 启动时自动配置数据库信息导致。

因为 DruidDataSourceAutoConfigure 在 DynamicDataSourceAutoConfiguration 之前会注入一个 DataSourceWrapper,会在原生的 spring.datasource 下找 url,username,password 信息。

@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)