You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/03/24 07:25:12 UTC

[dubbo] 11/12: fix reference cache (#7412)

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 <ky...@qq.com>
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);
             }