From 33213febed7bae72440cfb039dbf92520a106e6e Mon Sep 17 00:00:00 2001 From: yangjuanying <531948963@qq.com> Date: Wed, 16 Aug 2023 17:19:40 +0800 Subject: [PATCH] =?UTF-8?q?PolarisConfigRefreshOptimizationListener?= =?UTF-8?q?=E7=9A=84removeRelatedBeansOfReflect=E5=A6=82=E6=9E=9C=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E4=B8=8D=E8=A6=81=E5=BD=B1=E5=93=8D=E4=B8=BB=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PolarisConfigRefreshOptimizationListener.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigRefreshOptimizationListener.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigRefreshOptimizationListener.java index 30e256dca..487bcd27d 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigRefreshOptimizationListener.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigRefreshOptimizationListener.java @@ -28,6 +28,7 @@ import com.tencent.cloud.polaris.config.enums.RefreshType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConstructorArgumentValues; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; @@ -105,9 +106,15 @@ public class PolarisConfigRefreshOptimizationListener implements ApplicationList } private void removeRelatedBeansOfReflect(ConfigurableApplicationContext applicationContext) { - DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory(); - beanFactory.removeBeanDefinition(REFLECT_REFRESHER_BEAN_NAME); - beanFactory.removeBeanDefinition(REFLECT_REBINDER_BEAN_NAME); + try { + DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory(); + beanFactory.removeBeanDefinition(REFLECT_REFRESHER_BEAN_NAME); + beanFactory.removeBeanDefinition(REFLECT_REBINDER_BEAN_NAME); + } + catch (BeansException e) { + // 如果这段代码出现removeBean异常不要影响主进程启动,有些用户用法会导致polarisReflectPropertySourceAutoRefresher没加载,这时候removeBeanDefinition会报错 + LOGGER.debug("removeRelatedBeansOfReflect occur error:", e); + } } private void registerRefresherBeanOfRefreshContext(ConfigurableApplicationContext applicationContext) {