You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/08/03 15:44:39 UTC

[dubbo] branch 3.0 updated: fix error when register dubbo bootstrap application listener in hsf consumer bean (#8410)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 63baa5c  fix error when register dubbo bootstrap application listener in hsf consumer bean (#8410)
63baa5c is described below

commit 63baa5c0432ad3f51ea7e583f0b0af4863804238
Author: Gong Dewei <ky...@qq.com>
AuthorDate: Tue Aug 3 23:44:23 2021 +0800

    fix error when register dubbo bootstrap application listener in hsf consumer bean (#8410)
---
 .../context/DubboBootstrapApplicationListener.java   | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java
index e30892d..90d0680 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java
@@ -82,7 +82,11 @@ public class DubboBootstrapApplicationListener implements ApplicationListener, A
 
     private void initDubboConfigBeans() {
         // load DubboConfigBeanInitializer to init config beans
-        applicationContext.getBean(DubboConfigBeanInitializer.BEAN_NAME, DubboConfigBeanInitializer.class);
+        if (applicationContext.containsBean(DubboConfigBeanInitializer.BEAN_NAME)) {
+            applicationContext.getBean(DubboConfigBeanInitializer.BEAN_NAME, DubboConfigBeanInitializer.class);
+        } else {
+            logger.warn("Bean '" + DubboConfigBeanInitializer.BEAN_NAME + "' was not found");
+        }
 
         // All infrastructure config beans are loaded, initialize dubbo here
         DubboBootstrap.getInstance().initialize();
@@ -138,6 +142,10 @@ public class DubboBootstrapApplicationListener implements ApplicationListener, A
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         this.applicationContext = applicationContext;
 
+        checkCallStackAndInit();
+    }
+
+    private void checkCallStackAndInit() {
         // check call stack whether contains org.springframework.context.support.AbstractApplicationContext.registerListeners()
         Exception exception = new Exception();
         StackTraceElement[] stackTrace = exception.getStackTrace();
@@ -148,13 +156,13 @@ public class DubboBootstrapApplicationListener implements ApplicationListener, A
                 break;
             }
         }
-        if (!found) {
+        if (found) {
+            // init config beans here, compatible with spring 3.x/4.1.x
+            initDubboConfigBeans();
+        } else {
             logger.warn("DubboBootstrapApplicationListener initialization is unexpected, " +
-                "it should be created in AbstractApplicationContext.registerListeners() method", exception);
+                    "it should be created in AbstractApplicationContext.registerListeners() method", exception);
         }
-
-        // init config beans here, compatible with spring 3.x/4.1.x
-        initDubboConfigBeans();
     }
 
     public ApplicationContext getApplicationContext() {