解決思路:
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但绕、問題依然存在∧笏常可能是配置類代碼有問題纬黎,沒有把配置文件信息成功注入到配置類。以下是有問題的配置類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的實(shí)例變量:
由于配置類寫了下面這句話拆座,所以它會把配置文件datasource下的字段值賦給DataSourceBuilder對應(yīng)名稱的實(shí)例變量中挪凑,比如datasource下的type會尋找DataSourceBuilder的type實(shí)例變量并賦值逛艰,沒找到就不會賦值。
@ConfigurationProperties(prefix="spring.datasource")
那么這樣配置文件顯然是不對的瓮孙,于是按下面這樣這么改了:
同時下面這條語句也改一下
@ConfigurationProperties(prefix="spring.datasource.druid")
3、問題還是沒解決脸甘,猜測應(yīng)該是type沒有正確配置。在網(wǎng)上查找資料钝的,找到答案,使用type()方法進(jìn)行配置
@Bean(name = "frameworkDruidDS")
@ConfigurationProperties(prefix="spring.datasource.druid")
public DataSource dataSource() {
return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
}
配置如下