From a7b4650156da9ce71a153681c9f77bb4f2ec56bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=94=85=E7=9B=96?= <332309254@qq.com> Date: Sun, 7 Nov 2021 20:56:31 +0800 Subject: [PATCH] feat: close method --- .../datasource/DynamicRoutingDataSource.java | 36 ++----------------- 1 file changed, 3 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java b/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java index 3922f67..c89bee6 100644 --- a/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java +++ b/src/main/java/com/baomidou/dynamic/datasource/DynamicRoutingDataSource.java @@ -30,6 +30,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import javax.sql.DataSource; @@ -51,7 +52,7 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen private static final String UNDERLINE = "_"; /** - * 所有数据库¬ + * 所有数据库 */ private final Map dataSourceMap = new ConcurrentHashMap<>(); /** @@ -90,17 +91,6 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen throw new CannotFindDataSourceException("dynamic-datasource can not find primary datasource"); } - /** - * 获取当前所有的数据源 - * please use getDataSources() - * - * @return 当前所有数据源 - */ - @Deprecated - public Map getCurrentDataSources() { - return dataSourceMap; - } - /** * 获取所有的数据源 * @@ -110,17 +100,6 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen return dataSourceMap; } - /** - * 获取的当前所有的分组数据源 - * please use getGroupDataSources() - * - * @return 当前所有的分组数据源 - */ - @Deprecated - public Map getCurrentGroupDataSources() { - return groupDataSources; - } - /** * 获取的所有的分组数据源 * @@ -295,16 +274,7 @@ public class DynamicRoutingDataSource extends AbstractRoutingDataSource implemen dataSource = (DataSource) realDataSourceField.get(dataSource); } } - - Method closeMethod = null; - for(Class clazz = dataSource.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) { - try { - closeMethod = clazz.getDeclaredMethod("close"); - if (closeMethod != null) { - break; - } - } catch (Exception ignored){} - } + Method closeMethod = ReflectionUtils.findMethod(dataSource.getClass(), "close"); if (closeMethod != null) { closeMethod.invoke(dataSource); }