当前使用版本(必填,否则不予处理)

dynamic-datasource-spring-boot-starter-2.5.4.jar

该问题是如何引起的?(确定最新版也有问题再提!!!)

项目中使用了shardingjdbc分库分表,shardingjdbc的数据源类是org.apache.shardingsphere.shardingjdbc.jdbc.core.datasource.ShardingDataSource 继承了org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractDataSourceAdapter AbstractDataSourceAdapter中实现了close方法但是 mybatisplus中的销毁方法org.jeecg.config.shardingjdbc.gluemybatisplus.MyDynamicRoutingDataSource#destroy中使用getDeclaredMethod是获取不到父类中声明的close的所以会导致关闭数据源失败

重现步骤(如果有就写完整)

看完上面的原因相信聪明的开发者已经懂了 建议改成如下

try {
        //关键代码 getDeclaredMethod 只能获取本类中声明的所有方法(public,protected,privite等)
        Method closeMethod = clazz.getDeclaredMethod("close");
            closeMethod.invoke(dataSource);
    } catch (NoSuchMethodException e) {
//        加一个try
        try {
        //获取父类实现的close
          Method closeMethod = clazz.getMethod("close");
            closeMethod.invoke(dataSource);
            } catch (NoSuchMethodException e) {
                    log.warn("关闭数据源 {} 失败,", item.getKey());
             }
     }

报错信息

2020-06-04 10:25:12.130 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-4} closing ...
2020-06-04 10:25:12.133 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-4} closed
2020-06-04 10:25:12.134 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-5} closing ...
2020-06-04 10:25:12.136 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-5} closed
2020-06-04 10:25:12.136 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-6} closing ...
2020-06-04 10:25:12.138 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-6} closed
2020-06-04 10:25:12.138 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-3} closing ...
2020-06-04 10:25:12.139 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-3} closed
2020-06-04 10:25:12.139 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-2} closing ...
2020-06-04 10:25:12.140 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-2} closed
2020-06-04 10:25:12.141 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:1948 - {dataSource-1} closing ...
2020-06-04 10:25:12.141 [SpringContextShutdownHook] INFO  com.alibaba.druid.pool.DruidDataSource:2020 - {dataSource-1} closed
2020-06-04 10:25:12.144 [SpringContextShutdownHook] WARN  c.b.dynamic.datasource.DynamicRoutingDataSource:195 - 关闭数据源 sharding 失败,

Process finished with exit code 130

Comment From: huayanYu

欢迎提交PR。

Comment From: FlashMickeyMouse

一直没有时间,麻烦问下你们改了吗?