From cc312157d8fd83c88b4c5e4ebab0c2ebbefbc8fe Mon Sep 17 00:00:00 2001 From: bryan31 Date: Fri, 11 Feb 2022 12:35:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9springAware=E8=BF=9B=E8=A1=8C=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/executor/NodeExecutorHelper.java | 3 ++- .../com/yomahub/liteflow/util/SpringAware.java | 15 ++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/executor/NodeExecutorHelper.java b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/executor/NodeExecutorHelper.java index 44d82470d..93b86365f 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/executor/NodeExecutorHelper.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/executor/NodeExecutorHelper.java @@ -3,6 +3,7 @@ package com.yomahub.liteflow.entity.executor; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import com.google.common.collect.Maps; +import com.yomahub.liteflow.util.SpringAware; import org.apache.commons.lang.StringUtils; import java.util.Map; @@ -60,7 +61,7 @@ public class NodeExecutorHelper { // 此处无需使用同步锁进行同步-因为即使同时创建了两个实例,但是添加到缓存中的只会存在一个且不会存在并发问题-具体是由ConcurrentMap保证 if (ObjectUtil.isNull(nodeExecutor)) { // 获取重试执行器实例 - nodeExecutor = ReflectUtil.newInstance(nodeExecutorClass); + nodeExecutor = SpringAware.registerBean(nodeExecutorClass); // 缓存 nodeExecutorMap.put(nodeExecutorClass, nodeExecutor); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/util/SpringAware.java b/liteflow-core/src/main/java/com/yomahub/liteflow/util/SpringAware.java index 911df22cb..0131a96b3 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/util/SpringAware.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/util/SpringAware.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.util; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReflectUtil; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanDefinition; @@ -47,11 +48,15 @@ public class SpringAware implements ApplicationContextAware { } public static T registerBean(String beanName, Class c) { - DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)applicationContext.getAutowireCapableBeanFactory(); - BeanDefinition beanDefinition = new GenericBeanDefinition(); - beanDefinition.setBeanClassName(c.getName()); - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); + try{ + DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)applicationContext.getAutowireCapableBeanFactory(); + BeanDefinition beanDefinition = new GenericBeanDefinition(); + beanDefinition.setBeanClassName(c.getName()); + beanFactory.registerBeanDefinition(beanName, beanDefinition); + return getBean(beanName); + }catch (Exception e){ + return ReflectUtil.newInstance(c); + } } public static T registerBean(Class c) {