This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch 3.0 in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit c3e432c298b53ec7597bda47c744da0a8efcb82a Author: Gong Dewei <[email protected]> AuthorDate: Fri Mar 19 14:40:32 2021 +0800 fix reference cache (#7412) --- .../config/spring/DubboConfigInitializationPostProcessor.java | 8 -------- .../java/org/apache/dubbo/config/spring/ReferenceBeanManager.java | 8 ++++---- .../factory/annotation/ReferenceAnnotationBeanPostProcessor.java | 4 ++-- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/DubboConfigInitializationPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/DubboConfigInitializationPostProcessor.java index c6578d2..d9c5181 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/DubboConfigInitializationPostProcessor.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/DubboConfigInitializationPostProcessor.java @@ -75,14 +75,6 @@ public class DubboConfigInitializationPostProcessor implements BeanPostProcessor @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { -// try { -// if (bean instanceof ReferenceBean) { -// ReferenceBean referenceBean = (ReferenceBean) bean; -// referenceBeanManager.addReference(referenceBean); -// } -// } catch (Exception e) { -// throw new BeanInitializationException("Initialization reference bean failed", e); -// } return bean; } diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBeanManager.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBeanManager.java index 81afe4d..46be2e5 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBeanManager.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBeanManager.java @@ -94,13 +94,13 @@ public class ReferenceBeanManager implements ApplicationContextAware { * @throws Exception */ public void prepareReferenceBeans() throws Exception { - for (ReferenceBean referenceBean : getReferences()) { - initReferenceBean(referenceBean); - } - // prepare all reference beans Map<String, ReferenceBean> referenceBeanMap = applicationContext.getBeansOfType(ReferenceBean.class, true, false); for (ReferenceBean referenceBean : referenceBeanMap.values()) { + addReference(referenceBean); + } + + for (ReferenceBean referenceBean : getReferences()) { initReferenceBean(referenceBean); } initialized = true; diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java index 2379f54..e6a9715 100644 --- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java @@ -252,8 +252,8 @@ public class ReferenceAnnotationBeanPostProcessor extends AbstractAnnotationBean beanDefinitionRegistry.registerBeanDefinition(referenceBeanName, beanDefinition); getBeanFactory().registerSingleton(referenceBeanName, referenceBean); - - //referenceBeanManager.addReference(referenceBean); + //cache reference bean, avoid re-inject same element after prepare reference bean + referenceBeanManager.addReference(referenceBean); } catch (Exception e) { throw new Exception("Create dubbo reference bean failed", e); }
