bug #IAGJ2F SPI 在多线程场景下类加载器不一致导致加载有报错问题

This commit is contained in:
gaibu
2024-08-16 11:51:00 +08:00
parent 57c9a327e7
commit 618545667f
32 changed files with 106 additions and 70 deletions

View File

@@ -0,0 +1,18 @@
package com.yomahub.liteflow.springboot;
import com.yomahub.liteflow.spi.holder.*;
import org.springframework.beans.factory.SmartInitializingSingleton;
/**
* 初始化 SPI ,避免多线程场景下类加载器不同导致的加载不到 SPI 实现类
*
* @author gaibu
*/
public class LiteflowSpiInit implements SmartInitializingSingleton {
@Override
public void afterSingletonsInstantiated() {
SpiFactoryInitializing.loadInit();
}
}

View File

@@ -7,6 +7,7 @@ import com.yomahub.liteflow.spi.spring.SpringAware;
import com.yomahub.liteflow.spring.ComponentScanner;
import com.yomahub.liteflow.spring.DeclBeanDefinition;
import com.yomahub.liteflow.springboot.LiteflowExecutorInit;
import com.yomahub.liteflow.springboot.LiteflowSpiInit;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -72,4 +73,10 @@ public class LiteflowMainAutoConfiguration {
public MonitorBus monitorBus(LiteflowConfig liteflowConfig, SpringAware springAware) {
return new MonitorBus(liteflowConfig);
}
// 初始化 SPI ,避免多线程场景下类加载器不同导致的加载不到 SPI 实现类
@Bean("liteflowSpiInit")
public LiteflowSpiInit liteflowSpiInit() {
return new LiteflowSpiInit();
}
}