Distributed SQL transaction & query engine for data sharding, scaling, encryption, and more - on any database.
19.8k
stars
6.7k
forks
source link
sharding-jdbc-spring-boot-starter使用druid,DataSourceUtil初始化数据库连接参数BUG #423
Closed
ilevon closed 6 years ago
你好:
版本信息 sharding-jdbc.version:2.0.0.M1 mybatis-spring-boot-starter:1.3.1 druid: 1.0.13 部分源码: -->io.shardingjdbc.spring.boot.SpringBootConfiguration#setDataSourceMap -->DataSource dataSource = DataSourceUtil.getDataSource(dataSourceProps.get("type").toString(), dataSourceProps);
--> io.shardingjdbc.core.util.DataSourceUtil#callSetterMethod --> Method method = dataSource.getClass().getDeclaredMethod(methodName, new Class[]{each});
原因排查: druid1.0.13版本 com.alibaba.druid.pool.DruidDataSource 自身不包含url、driveClass、password、username等属性,而是在其继承的抽象类DruidAbstractDataSource中。 而shardingjdbc中DataSourceUtil使用的是getDeclaredMethod方式,导致连接参数set不进去,datasource无法正常完成初始化,导致后续代码空指针。
最后解决方式: 改用dbcp连接池可正常使用