您的位置:首页 > 编程语言 > Java开发

SpringBoot2.X版本使用druid连接池报ClassNotFound异常原因及解决办法

2018-11-28 13:20 791 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongchenlianxinqu/article/details/84581815

SpringBoot2.0以上版本删除了RelaxedDataBinder相关类(详情可以自行百度),使用druid连接池时如果使用较低版本,例如

[code]<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>

会报异常

[code]java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedDataBinder

所以如果使用propertie或者yml配置,例如:

[code]spring.datasource.dataSourceClassName = com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/demo
spring.datasource.username = root
spring.datasource.password = root

或者

[code]spring.datasource:
url: jdbc:mysql://127.0.0.1:3306/demo
username: root
password: root
driverClassName: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource

这种可以直接加载生效的配置,就需要把druid-spring-boot-starter依赖去掉,或者升到1.1.10版本;

如果是用bean的方式加载配置,例如:

[code]jdbc.dataSourceClassName = com.alibaba.druid.pool.DruidDataSource
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/demo
jdbc.username = root
jdbc.password = root

然后配置一个bean:

[code]@Configuration
public class DataSourceConfig {

@Bean
@ConfigurationProperties("jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
}

就不会出现版本过低导致类文件缺失的问题。

PS:本文采用的Apollo配置中心。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: