From ba93490e66955740c93ccc7de380e51edb8962a0 Mon Sep 17 00:00:00 2001 From: noear Date: Wed, 4 Sep 2024 20:26:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20SolonContextAware=20?= =?UTF-8?q?=E9=80=82=E9=85=8D=EF=BC=8C=E9=87=8D=E7=82=B9=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20registerDeclWrapBean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteflow/spi/solon/SolonContextAware.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java index 17008ec6e..92b25c250 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java @@ -2,10 +2,14 @@ package com.yomahub.liteflow.spi.solon; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.core.proxy.DeclWarpBean; +import com.yomahub.liteflow.core.proxy.LiteFlowProxyUtil; import com.yomahub.liteflow.spi.ContextAware; import org.noear.solon.Solon; import org.noear.solon.core.BeanWrap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.List; @@ -17,6 +21,7 @@ import java.util.Map; * @author Bryan.Zhang */ public class SolonContextAware implements ContextAware { + private static final Logger LOG = LoggerFactory.getLogger(SolonContextAware.class); @Override public T getBean(String name) { @@ -46,8 +51,12 @@ public class SolonContextAware implements ContextAware { @Override public T registerBean(String beanName, Class c) { - BeanWrap beanWrap = new BeanWrap(Solon.context(), c, null, beanName); - Solon.context().putWrap(beanName, beanWrap); + BeanWrap beanWrap = Solon.context().getWrap(beanName); + if (beanWrap == null) { + beanWrap = new BeanWrap(Solon.context(), c, null, beanName); + Solon.context().putWrap(beanName, beanWrap); + Solon.context().putWrap(c, beanWrap); + } return beanWrap.get(); } @@ -59,16 +68,25 @@ public class SolonContextAware implements ContextAware { @Override public T registerBean(String beanName, Object bean) { - BeanWrap beanWrap = new BeanWrap(Solon.context(), bean.getClass(), bean, beanName); - Solon.context().putWrap(beanName, beanWrap); + BeanWrap beanWrap = Solon.context().getWrap(beanName); + if (beanWrap == null) { + beanWrap = Solon.context().wrap(beanName, bean); + Solon.context().putWrap(beanName, beanWrap); + } return beanWrap.get(); } @Override public Object registerDeclWrapBean(String beanName, DeclWarpBean declWarpBean) { - BeanWrap beanWrap = new BeanWrap(Solon.context(), declWarpBean.getClass(), declWarpBean, beanName); - Solon.context().putWrap(beanName, beanWrap); + BeanWrap beanWrap = Solon.context().getWrap(beanName); + if (beanWrap == null) { + NodeComponent nodeComponent = LiteFlowProxyUtil.proxy2NodeComponent(declWarpBean); + beanWrap = Solon.context().wrap(beanName, nodeComponent); + Solon.context().putWrap(beanName, beanWrap); + } + + LOG.info("proxy component[{}] has been found", beanName); return beanWrap.get(); } @@ -96,5 +114,4 @@ public class SolonContextAware implements ContextAware { public int priority() { return 1; } - }