springboot 使用druid數(shù)據(jù)源 No supported DataSource type found

解決思路:

1、問題可能在上面顯示的配置文件application.yml的spring.datasource.type里。嘗試在其他類里import這個類,結(jié)果是
The import com.alibaba.druid.pool.DruidDataSource cannot be resolved

通過檢查lib,是有druid和druid-spring-boot-starter的jar包的。既然在maven添加了依賴,成功導(dǎo)入了jar包,卻出現(xiàn)這種問題。大部分原因是jar包重復(fù)、或者有依賴關(guān)系的jar包之間沖突了。

查看pom.xml,嘗試把druid的dependency去掉。

2、問題依然存在??赡苁桥渲妙惔a有問題,沒有把配置文件信息成功注入到配置類。以下是有問題的配置類DruidDataSourceConfig

import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DruidDataSourceConfig {
    
    private static final Logger logger = LoggerFactory.getLogger(DruidDataSourceConfig.class);

    @Bean(name = "frameworkDruidDS")
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

查看DataSourceBuilder的實例變量:

由于配置類寫了下面這句話,所以它會把配置文件datasource下的字段值賦給DataSourceBuilder對應(yīng)名稱的實例變量中,比如datasource下的type會尋找DataSourceBuilder的type實例變量并賦值,沒找到就不會賦值。

@ConfigurationProperties(prefix="spring.datasource")

那么這樣配置文件顯然是不對的,于是按下面這樣這么改了:

同時下面這條語句也改一下

@ConfigurationProperties(prefix="spring.datasource.druid")

3、問題還是沒解決,猜測應(yīng)該是type沒有正確配置。在網(wǎng)上查找資料,找到答案,使用type()方法進行配置

    @Bean(name = "frameworkDruidDS")
    @ConfigurationProperties(prefix="spring.datasource.druid")
    public DataSource dataSource() {
        return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
    }

配置如下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容