From d490ef8e8f124b28f07bf143a9ec9a27268d8be6 Mon Sep 17 00:00:00 2001 From: lonecloud Date: Thu, 25 Nov 2021 18:00:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20@DS=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=20#407?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/support/DataSourceClassResolver.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/baomidou/dynamic/datasource/support/DataSourceClassResolver.java b/src/main/java/com/baomidou/dynamic/datasource/support/DataSourceClassResolver.java index e99d140a..2ce5158b 100644 --- a/src/main/java/com/baomidou/dynamic/datasource/support/DataSourceClassResolver.java +++ b/src/main/java/com/baomidou/dynamic/datasource/support/DataSourceClassResolver.java @@ -119,14 +119,19 @@ private String computeDatasource(Method method, Object targetObject) { if (allowedPublicOnly && !Modifier.isPublic(method.getModifiers())) { return null; } + //1. 从当前方法接口中获取 + String dsAttr = findDataSourceAttribute(method); + if (dsAttr != null) { + return dsAttr; + } Class targetClass = targetObject.getClass(); Class userClass = ClassUtils.getUserClass(targetClass); // JDK代理时, 获取实现类的方法声明. method: 接口的方法, specificMethod: 实现类方法 Method specificMethod = ClassUtils.getMostSpecificMethod(method, userClass); specificMethod = BridgeMethodResolver.findBridgedMethod(specificMethod); - // 从当前方法查找 - String dsAttr = findDataSourceAttribute(specificMethod); + //2. 从桥接方法查找 + dsAttr = findDataSourceAttribute(specificMethod); if (dsAttr != null) { return dsAttr; }