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);
             }

Reply via email to