From f968892eaee6b18e06de57532420f80084cafbb8 Mon Sep 17 00:00:00 2001 From: wulingxiao <1251605638@qqcom> Date: Fri, 19 Aug 2022 20:51:27 +0800 Subject: [PATCH] =?UTF-8?q?optimize=EF=BC=9Aoptimize=20config=20module=20c?= =?UTF-8?q?ode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/annotation/PolarisProcessor.java | 15 ++++++++------- .../spring/annotation/SpringValueProcessor.java | 2 +- .../config/spring/property/PlaceholderHelper.java | 9 +++++++-- .../config/spring/property/SpringValue.java | 11 ++++++++--- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/PolarisProcessor.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/PolarisProcessor.java index f0ee2753d..42f69f8d7 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/PolarisProcessor.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/PolarisProcessor.java @@ -27,6 +27,7 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.Ordered; import org.springframework.core.PriorityOrdered; +import org.springframework.lang.NonNull; import org.springframework.util.ReflectionUtils; /** @@ -37,9 +38,9 @@ import org.springframework.util.ReflectionUtils; public abstract class PolarisProcessor implements BeanPostProcessor, PriorityOrdered { @Override - public Object postProcessBeforeInitialization(Object bean, String beanName) + public Object postProcessBeforeInitialization(Object bean, @NonNull String beanName) throws BeansException { - Class clazz = bean.getClass(); + Class clazz = bean.getClass(); for (Field field : findAllField(clazz)) { processField(bean, beanName, field); } @@ -50,7 +51,7 @@ public abstract class PolarisProcessor implements BeanPostProcessor, PriorityOrd } @Override - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + public Object postProcessAfterInitialization(@NonNull Object bean, @NonNull String beanName) throws BeansException { return bean; } @@ -77,15 +78,15 @@ public abstract class PolarisProcessor implements BeanPostProcessor, PriorityOrd return Ordered.LOWEST_PRECEDENCE; } - private List findAllField(Class clazz) { + private List findAllField(Class clazz) { final List res = new LinkedList<>(); - ReflectionUtils.doWithFields(clazz, field -> res.add(field)); + ReflectionUtils.doWithFields(clazz, res::add); return res; } - private List findAllMethod(Class clazz) { + private List findAllMethod(Class clazz) { final List res = new LinkedList<>(); - ReflectionUtils.doWithMethods(clazz, method -> res.add(method)); + ReflectionUtils.doWithMethods(clazz, res::add); return res; } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/SpringValueProcessor.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/SpringValueProcessor.java index da71bd70f..24279e07e 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/SpringValueProcessor.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/annotation/SpringValueProcessor.java @@ -87,7 +87,7 @@ public class SpringValueProcessor extends PolarisProcessor implements BeanFactor } @Override - public Object postProcessBeforeInitialization(Object bean, String beanName) + public Object postProcessBeforeInitialization(Object bean, @NonNull String beanName) throws BeansException { if (polarisConfigProperties.isAutoRefresh()) { super.postProcessBeforeInitialization(bean, beanName); diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/PlaceholderHelper.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/PlaceholderHelper.java index 2d7515661..a2223dc78 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/PlaceholderHelper.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/PlaceholderHelper.java @@ -71,7 +71,7 @@ public class PlaceholderHelper { if (beanFactory.getBeanExpressionResolver() == null) { return value; } - Scope scope = (beanDefinition != null ? beanFactory + Scope scope = (beanDefinition != null && beanDefinition.getScope() != null ? beanFactory .getRegisteredScope(beanDefinition.getScope()) : null); return beanFactory.getBeanExpressionResolver() .evaluate(value, new BeanExpressionContext(beanFactory, scope)); @@ -92,7 +92,7 @@ public class PlaceholderHelper { public Set extractPlaceholderKeys(String propertyString) { Set placeholderKeys = Sets.newHashSet(); - if (Strings.isNullOrEmpty(propertyString) || (!isNormalizedPlaceholder(propertyString) && !isExpressionWithPlaceholder(propertyString))) { + if (!isPlaceholder(propertyString)) { return placeholderKeys; } @@ -147,6 +147,11 @@ public class PlaceholderHelper { return placeholderKeys; } + private boolean isPlaceholder(String propertyString) { + return !Strings.isNullOrEmpty(propertyString) && + (isNormalizedPlaceholder(propertyString) || isExpressionWithPlaceholder(propertyString)); + } + private boolean isNormalizedPlaceholder(String propertyString) { return propertyString.startsWith(PLACEHOLDER_PREFIX) && propertyString.contains(PLACEHOLDER_SUFFIX); } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/SpringValue.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/SpringValue.java index c092b96d5..ddde1f525 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/SpringValue.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/spring/property/SpringValue.java @@ -86,7 +86,7 @@ public class SpringValue { private void injectMethod(Object newVal) throws InvocationTargetException, IllegalAccessException { Object bean = beanRef.get(); - if (bean == null) { + if (bean == null || methodParameter.getMethod() == null) { return; } methodParameter.getMethod().invoke(bean, newVal); @@ -131,7 +131,12 @@ public class SpringValue { .format("key: %s, beanName: %s, field: %s.%s", key, beanName, bean.getClass() .getName(), field.getName()); } - return String.format("key: %s, beanName: %s, method: %s.%s", key, beanName, bean.getClass().getName(), - methodParameter.getMethod().getName()); + if (null != methodParameter.getMethod()) { + return String.format("key: %s, beanName: %s, method: %s.%s", key, beanName, bean.getClass().getName(), + methodParameter.getMethod().getName()); + } + else { + return String.format("key: %s, beanName: %s", key, beanName); + } } }