From 495842e59989809d8e189849d2e9319fa61296a0 Mon Sep 17 00:00:00 2001 From: mghio Date: Tue, 7 Dec 2021 21:41:01 +0800 Subject: [PATCH 1/2] refactor: SpringValueProcessor extract duplicate code --- .../annotation/SpringValueProcessor.java | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java index 8d4a0695710..20f83db9590 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java @@ -28,6 +28,7 @@ import com.google.common.collect.Multimap; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; +import java.lang.reflect.Member; import java.lang.reflect.Method; import java.util.Collection; import java.util.Set; @@ -46,7 +47,7 @@ /** * Spring value processor of field or method which has @Value and xml config placeholders. * - * @author github.com/zhegexiaohuozi seimimaster@gmail.com + * @author github.com/zhegexiaohuozi seimimaster@gmail.com mghio.dev@gmail.com * @since 2017/12/20. */ public class SpringValueProcessor extends ApolloProcessor implements BeanFactoryPostProcessor, BeanFactoryAware { @@ -94,17 +95,8 @@ protected void processField(Object bean, String beanName, Field field) { if (value == null) { return; } - Set keys = placeholderHelper.extractPlaceholderKeys(value.value()); - - if (keys.isEmpty()) { - return; - } - for (String key : keys) { - SpringValue springValue = new SpringValue(key, value.value(), bean, beanName, field, false); - springValueRegistry.register(beanFactory, key, springValue); - logger.debug("Monitoring {}", springValue); - } + doRegister(bean, beanName, field, value); } @Override @@ -124,20 +116,33 @@ protected void processMethod(Object bean, String beanName, Method method) { return; } - Set keys = placeholderHelper.extractPlaceholderKeys(value.value()); + doRegister(bean, beanName, method, value); + } + private void doRegister(Object bean, String beanName, Member member, Value value) { + Set keys = placeholderHelper.extractPlaceholderKeys(value.value()); if (keys.isEmpty()) { return; } for (String key : keys) { - SpringValue springValue = new SpringValue(key, value.value(), bean, beanName, method, false); + SpringValue springValue; + if (member instanceof Field) { + Field field = (Field) member; + springValue = new SpringValue(key, value.value(), bean, beanName, field, false); + } else if (member instanceof Method) { + Method method = (Method) member; + springValue = new SpringValue(key, value.value(), bean, beanName, method, false); + } else { + logger.error("@Value annotation current is only support to be used on methods or property, " + + "but used on {}", member.getClass()); + return; + } springValueRegistry.register(beanFactory, key, springValue); - logger.info("Monitoring {}", springValue); + logger.debug("Monitoring {}", springValue); } } - private void processBeanPropertyValues(Object bean, String beanName) { Collection propertySpringValues = beanName2SpringValueDefinitions .get(beanName); From c6010bb74e50bb070b0e9a7776e52a00c1396b50 Mon Sep 17 00:00:00 2001 From: mghio Date: Thu, 9 Dec 2021 09:19:13 +0800 Subject: [PATCH 2/2] fix: typo & logging level --- .../apollo/spring/annotation/SpringValueProcessor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java index 20f83db9590..2d82c2ae964 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java @@ -134,12 +134,12 @@ private void doRegister(Object bean, String beanName, Member member, Value value Method method = (Method) member; springValue = new SpringValue(key, value.value(), bean, beanName, method, false); } else { - logger.error("@Value annotation current is only support to be used on methods or property, " - + "but used on {}", member.getClass()); + logger.error("Apollo @Value annotation currently only support to be used on methods and fields, " + + "but is used on {}", member.getClass()); return; } springValueRegistry.register(beanFactory, key, springValue); - logger.debug("Monitoring {}", springValue); + logger.info("Monitoring {}", springValue); } }