【代码优化】IoT:移除 ServiceRegistry,使用 SpringUtils 替代

This commit is contained in:
YunaiV
2025-01-20 19:28:03 +08:00
parent a85890d958
commit 3647fd3686
9 changed files with 19 additions and 159 deletions

View File

@@ -1,22 +1,20 @@
package cn.iocoder.yudao.module.iot.framework.plugin;
import java.util.List;
import javax.annotation.Resource;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.plugininfo.PluginInfoDO;
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginStatusEnum;
import cn.iocoder.yudao.module.iot.service.plugin.PluginInfoService;
import lombok.extern.slf4j.Slf4j;
import org.pf4j.spring.SpringPluginManager;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
import cn.iocoder.yudao.module.iot.service.plugin.PluginInfoService;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.plugininfo.PluginInfoDO;
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginStatusEnum;
import javax.annotation.Resource;
import java.util.List;
// TODO @芋艿:需要 review 下
@Component
@Slf4j
public class PluginStart implements ApplicationRunner {

View File

@@ -1,46 +1,35 @@
package cn.iocoder.yudao.module.iot.framework.plugin;
import cn.iocoder.yudao.module.iot.api.ServiceRegistry;
import cn.iocoder.yudao.module.iot.api.device.DeviceDataApi;
import cn.iocoder.yudao.module.iot.framework.plugin.listener.CustomPluginStateListener;
import lombok.extern.slf4j.Slf4j;
import org.pf4j.spring.SpringPluginManager;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import javax.annotation.Resource;
import java.nio.file.Paths;
// TODO @芋艿:需要 review 下
@Slf4j
@Configuration
public class UnifiedConfiguration {
private static final String SERVICE_REGISTRY_INITIALIZED_MARKER = "serviceRegistryInitializedMarker";
@Resource
private DeviceDataApi deviceDataApi;
@Value("${pf4j.pluginsDir:pluginsDir}")
private String pluginsDir;
@Bean(SERVICE_REGISTRY_INITIALIZED_MARKER)
public Object serviceRegistryInitializedMarker() {
ServiceRegistry.registerService(DeviceDataApi.class, deviceDataApi);
log.info("[init][将 DeviceDataApi 实例注册到 ServiceRegistry 中]");
return new Object();
}
@Bean
@DependsOn(SERVICE_REGISTRY_INITIALIZED_MARKER)
// @DependsOn("deviceDataApiImpl")
public SpringPluginManager pluginManager() {
log.info("[init][实例化 SpringPluginManager]");
SpringPluginManager springPluginManager = new SpringPluginManager(Paths.get(pluginsDir)) {
// SpringPluginManager springPluginManager = new SpringPluginManager() {
@Override
public void startPlugins() {
// 禁用插件启动,避免插件启动时,启动所有插件
log.info("[init][禁用默认启动所有插件]");
}
};
springPluginManager.addPluginStateListener(new CustomPluginStateListener());
return springPluginManager;

View File

@@ -5,6 +5,7 @@ import org.pf4j.PluginStateEvent;
import org.pf4j.PluginStateListener;
import org.springframework.stereotype.Component;
// TODO @芋艿:需要 review 下
@Component
@Slf4j
public class CustomPluginStateListener implements PluginStateListener {