From 86f988235eed54391286d6d46ec1af0866d6c5a2 Mon Sep 17 00:00:00 2001 From: wuhui Date: Mon, 27 Nov 2023 14:00:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1=E3=80=81=E5=8E=BB=E6=8E=89DtpProperties?= =?UTF-8?q?=E4=B8=ADnacos=E5=AF=B9=E8=B1=A1=E7=9A=84=E9=85=8D=E7=BD=AE=202?= =?UTF-8?q?=E3=80=81=E5=BC=95=E5=85=A5=20=20=20=20=20=20com.alibaba.boot=20=20=20=20=20=20naco?= =?UTF-8?q?s-config-spring-boot-actuator=20=20?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=20=E9=87=8D=E5=86=99=20NacosRefresher=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0SmartApplicationListener=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E7=9B=91=E5=90=ACNacosConfigEvent=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E5=BD=93nacos=E6=9C=8D=E5=8A=A1=E5=99=A8=E4=B8=AD?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8F=91=E7=94=9F=E5=8F=98=E6=9B=B4=E6=97=B6?= =?UTF-8?q?=E5=9B=9E=E6=8E=A5=E5=8F=97=E5=88=B0=E6=AD=A4=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E7=94=A8AbstractRefresher=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E7=9A=84refresh=E5=8D=B3=E5=8F=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/properties/DtpProperties.java | 5 -- dependencies/pom.xml | 7 ++ .../starter-nacos/pom.xml | 5 +- .../DtpNacosAutoConfiguration.java | 4 -- .../nacos/refresher/NacosRefresher.java | 72 +++---------------- 5 files changed, 19 insertions(+), 74 deletions(-) diff --git a/common/src/main/java/org/dromara/dynamictp/common/properties/DtpProperties.java b/common/src/main/java/org/dromara/dynamictp/common/properties/DtpProperties.java index c66d0c39..a5d04b06 100644 --- a/common/src/main/java/org/dromara/dynamictp/common/properties/DtpProperties.java +++ b/common/src/main/java/org/dromara/dynamictp/common/properties/DtpProperties.java @@ -79,11 +79,6 @@ public class DtpProperties { */ private List platforms; - /** - * Nacos config. - */ - private Nacos nacos; - /** * Apollo config. */ diff --git a/dependencies/pom.xml b/dependencies/pom.xml index efd1a449..308d3a08 100644 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -48,6 +48,7 @@ 1.5.0 2.0.4 + 0.2.12 2021.0.5.0 1.12.4-2021.0.8 1.10.11-2021.0.x @@ -274,6 +275,12 @@ ${fastjson.version} + + com.alibaba.boot + nacos-config-spring-boot-starter + ${spring-boot-nacos.version} + + com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config diff --git a/starter/starter-configcenter/starter-nacos/pom.xml b/starter/starter-configcenter/starter-nacos/pom.xml index 13304565..1777f3db 100644 --- a/starter/starter-configcenter/starter-nacos/pom.xml +++ b/starter/starter-configcenter/starter-nacos/pom.xml @@ -12,9 +12,8 @@ - com.alibaba.nacos - nacos-api - true + com.alibaba.boot + nacos-config-spring-boot-starter diff --git a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java index 3ddc54cb..fb932593 100644 --- a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java +++ b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java @@ -21,9 +21,7 @@ import org.dromara.dynamictp.core.spring.DtpBaseBeanConfiguration; import org.dromara.dynamictp.starter.nacos.refresher.NacosRefresher; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -34,8 +32,6 @@ import org.springframework.context.annotation.Configuration; * @since 1.0.0 **/ @Configuration -@ConditionalOnClass(value = com.alibaba.nacos.api.config.ConfigService.class) -@ConditionalOnMissingClass(value = {"com.alibaba.cloud.nacos.NacosConfigProperties"}) @ConditionalOnBean({DtpBaseBeanConfiguration.class}) @AutoConfigureAfter({DtpBaseBeanConfiguration.class}) public class DtpNacosAutoConfiguration { diff --git a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/refresher/NacosRefresher.java b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/refresher/NacosRefresher.java index 3874a547..52cfe5fd 100644 --- a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/refresher/NacosRefresher.java +++ b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/refresher/NacosRefresher.java @@ -17,23 +17,12 @@ package org.dromara.dynamictp.starter.nacos.refresher; -import cn.hutool.core.io.FileUtil; -import com.alibaba.nacos.api.annotation.NacosInjected; -import com.alibaba.nacos.api.config.ConfigService; -import com.alibaba.nacos.api.config.listener.Listener; -import com.alibaba.nacos.api.exception.NacosException; +import com.alibaba.nacos.spring.context.event.config.NacosConfigEvent; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.dromara.dynamictp.common.em.ConfigFileTypeEnum; -import org.dromara.dynamictp.common.properties.DtpProperties; -import org.dromara.dynamictp.common.util.NacosUtil; import org.dromara.dynamictp.core.refresher.AbstractRefresher; -import org.dromara.dynamictp.core.support.ThreadPoolCreator; -import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.event.SmartApplicationListener; -import java.util.concurrent.Executor; -import java.util.concurrent.ThreadPoolExecutor; /** * NacosRefresher related @@ -42,58 +31,17 @@ import java.util.concurrent.ThreadPoolExecutor; * @since 1.0.0 **/ @Slf4j -public class NacosRefresher extends AbstractRefresher implements InitializingBean, DisposableBean, Listener { - - private static final ThreadPoolExecutor EXECUTOR = ThreadPoolCreator.createCommonFast("nacos-listener"); - - private ConfigFileTypeEnum configFileType; - - @NacosInjected - private ConfigService configService; +public class NacosRefresher extends AbstractRefresher implements SmartApplicationListener { @Override - public void afterPropertiesSet() { - - DtpProperties.Nacos nacos = dtpProperties.getNacos(); - ConfigFileTypeEnum deduceType = getConfigFileType(nacos.getDataId()); - configFileType = NacosUtil.getConfigType(dtpProperties, deduceType); - String dataId = NacosUtil.deduceDataId(nacos, environment, configFileType); - String group = NacosUtil.getGroup(nacos, "DEFAULT_GROUP"); - - try { - configService.addListener(dataId, group, this); - log.info("DynamicTp refresher, add listener success, dataId: {}, group: {}", dataId, group); - } catch (NacosException e) { - log.error("DynamicTp refresher, add listener error, dataId: {}, group: {}", dataId, group, e); - } - } - - /** - * 根据dataId后缀识别配置类型 - * @param dataId dataId - * @return ConfigFileTypeEnum - */ - private static ConfigFileTypeEnum getConfigFileType(String dataId) { - String suffix = FileUtil.getSuffix(dataId); - if (StringUtils.isBlank(suffix)) { - return ConfigFileTypeEnum.PROPERTIES; - } - return ConfigFileTypeEnum.of(suffix); + public boolean supportsEventType(Class eventType) { + return NacosConfigEvent.class.isAssignableFrom(eventType); } @Override - public Executor getExecutor() { - return EXECUTOR; - } - - @Override - public void receiveConfigInfo(String content) { - refresh(content, configFileType); - } - - @Override - public void destroy() { - EXECUTOR.shutdown(); + public void onApplicationEvent(ApplicationEvent event) { + if (event instanceof NacosConfigEvent) { + refresh(environment); + } } - } -- Gitee From b3906f935a0016b532f15355b2de82be72fb1ca3 Mon Sep 17 00:00:00 2001 From: wuhui Date: Tue, 28 Nov 2023 14:47:12 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E8=A7=A3=20@Con?= =?UTF-8?q?ditionalOnClass(NacosConfigProperties.class)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java index fb932593..a6d32901 100644 --- a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java +++ b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java @@ -17,10 +17,12 @@ package org.dromara.dynamictp.starter.nacos.autoconfigure; +import com.alibaba.boot.nacos.config.properties.NacosConfigProperties; import org.dromara.dynamictp.core.spring.DtpBaseBeanConfiguration; import org.dromara.dynamictp.starter.nacos.refresher.NacosRefresher; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -38,6 +40,7 @@ public class DtpNacosAutoConfiguration { @Bean @ConditionalOnMissingBean() + @ConditionalOnClass(NacosConfigProperties.class) public NacosRefresher nacosRefresher() { return new NacosRefresher(); } -- Gitee From d43a61c8fb5d81d99f2366c730d507e6eb5e0868 Mon Sep 17 00:00:00 2001 From: wuhui Date: Tue, 28 Nov 2023 14:58:48 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E8=A7=A3=20@Con?= =?UTF-8?q?ditionalOnClass(NacosConfigProperties.class)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java index a6d32901..f78ba532 100644 --- a/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java +++ b/starter/starter-configcenter/starter-nacos/src/main/java/org/dromara/dynamictp/starter/nacos/autoconfigure/DtpNacosAutoConfiguration.java @@ -34,13 +34,13 @@ import org.springframework.context.annotation.Configuration; * @since 1.0.0 **/ @Configuration +@ConditionalOnClass(NacosConfigProperties.class) @ConditionalOnBean({DtpBaseBeanConfiguration.class}) @AutoConfigureAfter({DtpBaseBeanConfiguration.class}) public class DtpNacosAutoConfiguration { @Bean @ConditionalOnMissingBean() - @ConditionalOnClass(NacosConfigProperties.class) public NacosRefresher nacosRefresher() { return new NacosRefresher(); } -- Gitee