diff --git a/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationInjectedBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationInjectedBeanPostProcessor.java index 95ecdfb0a84..f103ed8c7d3 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationInjectedBeanPostProcessor.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationInjectedBeanPostProcessor.java @@ -64,7 +64,7 @@ /** * Abstract generic {@link BeanPostProcessor} implementation for customized annotation that annotated injected-object. - * + *

* The source code is cloned from https://github.com/alibaba/spring-context-support/blob/1.0.2/src/main/java/com/alibaba/spring/beans/factory/annotation/AnnotationInjectedBeanPostProcessor.java * * @since 2.6.6 @@ -224,7 +224,7 @@ private AnnotationInjectedBeanPostProcessor.AnnotatedInjectionMetadata buildAnno } - private InjectionMetadata findInjectionMetadata(String beanName, Class clazz, PropertyValues pvs) { + public InjectionMetadata findInjectionMetadata(String beanName, Class clazz, PropertyValues pvs) { // Fall back to class name as cache key, for backwards compatibility with custom callers. String cacheKey = (StringUtils.hasLength(beanName) ? beanName : clazz.getName()); // Quick check on the concurrent map first, with minimal locking. @@ -314,8 +314,8 @@ protected ConfigurableListableBeanFactory getBeanFactory() { * * @return non-null {@link Collection} */ - protected Collection getInjectedObjects() { - return this.injectedObjectsCache.values(); + protected Map getInjectedObjects() { + return this.injectedObjectsCache; } /** @@ -402,7 +402,7 @@ protected Map getInjectedFieldObjects for (AnnotationInjectedBeanPostProcessor.AnnotatedFieldElement fieldElement : fieldElements) { - injectedElementBeanMap.put(fieldElement, fieldElement.bean); + injectedElementBeanMap.put(fieldElement, fieldElement.injectedBean); } @@ -428,20 +428,19 @@ protected Map getInjectedMethodObject for (AnnotationInjectedBeanPostProcessor.AnnotatedMethodElement methodElement : methodElements) { - injectedElementBeanMap.put(methodElement, methodElement.object); + injectedElementBeanMap.put(methodElement, methodElement.injectedBean); } } return Collections.unmodifiableMap(injectedElementBeanMap); - } /** * {@link A} {@link InjectionMetadata} implementation */ - private class AnnotatedInjectionMetadata extends InjectionMetadata { + public class AnnotatedInjectionMetadata extends InjectionMetadata { private final Collection fieldElements; @@ -466,13 +465,13 @@ public Collection ge /** * {@link A} {@link Method} {@link InjectionMetadata.InjectedElement} */ - private class AnnotatedMethodElement extends InjectionMetadata.InjectedElement { + public class AnnotatedMethodElement extends InjectionMetadata.InjectedElement { private final Method method; private final A annotation; - private volatile Object object; + private volatile Object injectedBean; protected AnnotatedMethodElement(Method method, PropertyDescriptor pd, A annotation) { super(method, pd); @@ -485,14 +484,29 @@ protected void inject(Object bean, String beanName, PropertyValues pvs) throws T Class injectedType = pd.getPropertyType(); - Object injectedObject = getInjectedObject(annotation, bean, beanName, injectedType, this); + injectedBean = getInjectedObject(annotation, bean, beanName, injectedType, this); ReflectionUtils.makeAccessible(method); - method.invoke(bean, injectedObject); + method.invoke(bean, injectedBean); + + } + + public Method getMethod() { + return method; + } + + public A getAnnotation() { + return annotation; + } + public Object getInjectedBean() { + return injectedBean; } + public PropertyDescriptor getPd() { + return this.pd; + } } /** @@ -504,7 +518,7 @@ public class AnnotatedFieldElement extends InjectionMetadata.InjectedElement { private final A annotation; - private volatile Object bean; + private volatile Object injectedBean; protected AnnotatedFieldElement(Field field, A annotation) { super(field, null); @@ -517,12 +531,24 @@ protected void inject(Object bean, String beanName, PropertyValues pvs) throws T Class injectedType = field.getType(); - Object injectedObject = getInjectedObject(annotation, bean, beanName, injectedType, this); + injectedBean = getInjectedObject(annotation, bean, beanName, injectedType, this); ReflectionUtils.makeAccessible(field); - field.set(bean, injectedObject); + field.set(bean, injectedBean); + + } + + public Field getField() { + return field; + } + + public A getAnnotation() { + return annotation; + } + public Object getInjectedBean() { + return injectedBean; } } diff --git a/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/DubboConfigBindingBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/DubboConfigBindingBeanPostProcessor.java index f87be246935..21d261e66c7 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/DubboConfigBindingBeanPostProcessor.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/DubboConfigBindingBeanPostProcessor.java @@ -66,10 +66,6 @@ public class DubboConfigBindingBeanPostProcessor implements BeanPostProcessor, A private ApplicationContext applicationContext; - private boolean ignoreUnknownFields = true; - - private boolean ignoreInvalidFields = true; - private List configBeanCustomizers = Collections.emptyList(); /** @@ -93,11 +89,8 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro bind(prefix, dubboConfig); customize(beanName, dubboConfig); - } - return bean; - } private void bind(String prefix, AbstractConfig dubboConfig) { @@ -118,22 +111,6 @@ private void customize(String beanName, AbstractConfig dubboConfig) { } - public boolean isIgnoreUnknownFields() { - return ignoreUnknownFields; - } - - public void setIgnoreUnknownFields(boolean ignoreUnknownFields) { - this.ignoreUnknownFields = ignoreUnknownFields; - } - - public boolean isIgnoreInvalidFields() { - return ignoreInvalidFields; - } - - public void setIgnoreInvalidFields(boolean ignoreInvalidFields) { - this.ignoreInvalidFields = ignoreInvalidFields; - } - public DubboConfigBinder getDubboConfigBinder() { return dubboConfigBinder; } @@ -175,9 +152,6 @@ private void initDubboConfigBinder() { } } - dubboConfigBinder.setIgnoreUnknownFields(ignoreUnknownFields); - dubboConfigBinder.setIgnoreInvalidFields(ignoreInvalidFields); - } private void initConfigBeanCustomizers() { @@ -199,6 +173,10 @@ private void initConfigBeanCustomizers() { protected DubboConfigBinder createDubboConfigBinder(Environment environment) { DefaultDubboConfigBinder defaultDubboConfigBinder = new DefaultDubboConfigBinder(); defaultDubboConfigBinder.setEnvironment(environment); + + defaultDubboConfigBinder.setIgnoreUnknownFields(true); + defaultDubboConfigBinder.setIgnoreInvalidFields(true); + return defaultDubboConfigBinder; }