Przeglądaj źródła

fix 修复 easy-es 关闭开关之后初始化报错

疯狂的狮子Li 1 rok temu
rodzic
commit
1766247d2f

+ 84 - 0
ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/spring/config/EasyEsConfiguration.java

@@ -0,0 +1,84 @@
+package org.dromara.easyes.spring.config;
+
+import lombok.Setter;
+import org.dromara.easyes.common.property.EasyEsDynamicProperties;
+import org.dromara.easyes.common.property.EasyEsProperties;
+import org.dromara.easyes.common.strategy.AutoProcessIndexStrategy;
+import org.dromara.easyes.common.utils.RestHighLevelClientUtils;
+import org.dromara.easyes.core.index.AutoProcessIndexNotSmoothlyStrategy;
+import org.dromara.easyes.core.index.AutoProcessIndexSmoothlyStrategy;
+import org.dromara.easyes.spring.factory.IndexStrategyFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.Assert;
+
+import java.util.Map;
+
+/**
+ * @author MoJie
+ * @since 2.0
+ */
+@Setter
+@Configuration
+@ConditionalOnProperty(value = "easy-es.enable", havingValue = "true")
+public class EasyEsConfiguration implements InitializingBean {
+
+    private EasyEsProperties easyEsProperties;
+
+    private EasyEsDynamicProperties easyEsDynamicProperties;
+
+    @Autowired
+    public EasyEsConfiguration(EasyEsProperties easyEsProperties, EasyEsDynamicProperties easyEsDynamicProperties) {
+        this.easyEsProperties = easyEsProperties;
+        this.easyEsDynamicProperties = easyEsDynamicProperties;
+    }
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        Assert.notNull(this.easyEsProperties, "easyEsProperties must is A bean. easy-es配置类必须给配置一个bean");
+    }
+
+    @Bean
+    public IndexStrategyFactory indexStrategyFactory() {
+        return new IndexStrategyFactory();
+    }
+
+    @Bean
+    public RestHighLevelClientUtils restHighLevelClientUtils() {
+        RestHighLevelClientUtils restHighLevelClientUtils = new RestHighLevelClientUtils();
+        if (this.easyEsDynamicProperties == null) {
+            this.easyEsDynamicProperties = new EasyEsDynamicProperties();
+        }
+        Map<String, EasyEsProperties> datasourceMap = this.easyEsDynamicProperties.getDatasource();
+        if (datasourceMap.isEmpty()) {
+            // 设置默认数据源,兼容不使用多数据源配置场景的老用户使用习惯
+            datasourceMap.put(RestHighLevelClientUtils.DEFAULT_DS, this.easyEsProperties);
+        }
+        for (String key : datasourceMap.keySet()) {
+            EasyEsProperties easyEsConfigProperties = datasourceMap.get(key);
+            RestHighLevelClientUtils.registerRestHighLevelClient(key, RestHighLevelClientUtils
+                    .restHighLevelClient(easyEsConfigProperties));
+        }
+        return restHighLevelClientUtils;
+    }
+
+    /**
+     * 索引策略注册
+     *
+     * @return {@link AutoProcessIndexStrategy}
+     * @author MoJie
+     */
+    @Bean
+    public AutoProcessIndexStrategy autoProcessIndexSmoothlyStrategy() {
+        return new AutoProcessIndexSmoothlyStrategy();
+    }
+
+    @Bean
+    public AutoProcessIndexStrategy autoProcessIndexNotSmoothlyStrategy() {
+        return new AutoProcessIndexNotSmoothlyStrategy();
+    }
+
+}

+ 27 - 0
ruoyi-common/ruoyi-common-elasticsearch/src/main/java/org/dromara/easyes/starter/config/GeneratorConfiguration.java

@@ -0,0 +1,27 @@
+package org.dromara.easyes.starter.config;
+
+import org.dromara.easyes.core.config.GeneratorConfig;
+import org.dromara.easyes.core.toolkit.Generator;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * 代码生成注册
+ * @author MoJie
+ * @since 2.0
+ */
+@Component
+@ConditionalOnProperty(value = "easy-es.enable", havingValue = "true")
+public class GeneratorConfiguration extends Generator {
+
+    @Autowired
+    private RestHighLevelClient client;
+
+    @Override
+    public Boolean generate(GeneratorConfig config) {
+        super.generateEntity(config, this.client);
+        return Boolean.TRUE;
+    }
+}