From a4d02910defbdd819a34634e573915d98cc05207 Mon Sep 17 00:00:00 2001 From: "miaochen@vip.qq.com" Date: Sat, 14 Sep 2024 23:38:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20@Db=E6=B3=A8=E8=A7=A3=E6=B3=A8=E5=85=A5?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E4=B8=8D=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query/solon/integration/XPluginImpl.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/sql-extension/sql-solon-plugin/src/main/java/com/easy/query/solon/integration/XPluginImpl.java b/sql-extension/sql-solon-plugin/src/main/java/com/easy/query/solon/integration/XPluginImpl.java index 02507bfaf..40499b11a 100644 --- a/sql-extension/sql-solon-plugin/src/main/java/com/easy/query/solon/integration/XPluginImpl.java +++ b/sql-extension/sql-solon-plugin/src/main/java/com/easy/query/solon/integration/XPluginImpl.java @@ -10,8 +10,14 @@ import org.noear.solon.core.AppContext; import org.noear.solon.core.BeanWrap; import org.noear.solon.core.Plugin; import org.noear.solon.core.VarHolder; +import org.noear.solon.core.event.AppBeanLoadEndEvent; +import org.noear.solon.core.exception.InjectionException; import javax.sql.DataSource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * create time 2023/7/19 21:50 @@ -20,6 +26,7 @@ import javax.sql.DataSource; * @author xuejiaming */ public class XPluginImpl implements Plugin { + private final Map> checkMap = new HashMap<>(); @Override public void start(AppContext context) { String logClass = context.cfg().getProperty(CommonConstant.TAG + ".log-class"); @@ -36,6 +43,17 @@ public class XPluginImpl implements Plugin { injectorAddDo(varH, anno.value()); }); context.beanInterceptorAdd(EasyQueryTrack.class,new QueryTrackInterceptor()); + context.onEvent(AppBeanLoadEndEvent.class,event -> { + if(!checkMap.isEmpty()){ + for(Object key : checkMap.keySet()){ + List list = checkMap.get(key); + for(VarHolder holder : list){ + System.out.println("@Db inject failed:"+holder.getFullName()); + } + } + throw new InjectionException("@Db inject failed"); + } + }); } @@ -77,7 +95,17 @@ public class XPluginImpl implements Plugin { // } // } private void injectorAddDo(VarHolder varH, String annoValue) { - if (Utils.isEmpty(annoValue)) { + Object nameOrType = Utils.isEmpty(annoValue) ? DataSource.class : annoValue; + //记录需要注入的字段,注入完成后删除,剩下的就是注入失败的 + List list = checkMap.computeIfAbsent(nameOrType, k -> new ArrayList<>()); + list.add(varH); + varH.context().getWrapAsync(nameOrType, (dsBw) -> { + if (dsBw.raw() instanceof DataSource) { + inject0(varH, dsBw); + checkMap.remove(nameOrType); + } + }); + /*if (Utils.isEmpty(annoValue)) { varH.context().getWrapAsync(DataSource.class, (dsBw) -> { inject0(varH, dsBw); }); @@ -87,7 +115,7 @@ public class XPluginImpl implements Plugin { inject0(varH, dsBw); } }); - } + }*/ } // private void create0(Class clz, BeanWrap dsBw) { -- Gitee