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 2023/07/14 05:52:14 UTC
[dubbo] branch 3.2 updated: Check if initialized for ReferenceBean (#12723)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new e322b17301 Check if initialized for ReferenceBean (#12723)
e322b17301 is described below
commit e322b1730127ed8cce3ea8cba2794bb6082fdc53
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Fri Jul 14 13:52:07 2023 +0800
Check if initialized for ReferenceBean (#12723)
* Check if initialized for ReferenceBean
* fix name
---
.../main/java/org/apache/dubbo/config/ReferenceConfig.java | 13 ++++++++++++-
.../java/org/apache/dubbo/config/spring/ReferenceBean.java | 3 +++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index e8da1c28d4..761fc3224e 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -57,12 +57,12 @@ import org.apache.dubbo.rpc.support.ProtocolUtils;
import java.beans.Transient;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.TreeSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.TreeSet;
import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
@@ -796,6 +796,17 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
configPostProcessors.forEach(component -> component.postProcessReferConfig(this));
}
+ /**
+ * Return if ReferenceConfig has been initialized
+ * Note: Cannot use `isInitilized` as it may be treated as a Java Bean property
+ *
+ * @return initialized
+ */
+ @Transient
+ public boolean configInitialized() {
+ return initialized;
+ }
+
/**
* just for test
*
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index 975df8a2b2..e483455d03 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -393,6 +393,9 @@ public class ReferenceBean<T> implements FactoryBean<T>,
//Subclasses should synchronize on the given Object if they perform any sort of extended singleton creation phase.
// In particular, subclasses should not have their own mutexes involved in singleton creation, to avoid the potential for deadlocks in lazy-init situations.
//The redundant type cast is to be compatible with earlier than spring-4.2
+ if (referenceConfig.configInitialized()) {
+ return referenceConfig.get();
+ }
synchronized (((DefaultSingletonBeanRegistry)getBeanFactory()).getSingletonMutex()) {
return referenceConfig.get();
}