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

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


The following commit(s) were added to refs/heads/3.3 by this push:
     new 8f7446c81d Fix attributes is not passed by BeanDefinition (#13464)
8f7446c81d is described below

commit 8f7446c81def3ca38970a3c92c4842ba870072da
Author: huazhongming <crazy...@gmail.com>
AuthorDate: Wed Dec 13 16:18:46 2023 +0800

    Fix attributes is not passed by BeanDefinition (#13464)
    
    * Fix attributes is not passed by BeanDefinition
    
    Signed-off-by: crazyhzm <crazy...@gmail.com>
    
    * Fix attributes in native
    
    Signed-off-by: crazyhzm <crazy...@gmail.com>
    
    ---------
    
    Signed-off-by: crazyhzm <crazy...@gmail.com>
---
 .../org/apache/dubbo/config/AbstractInterfaceConfig.java     |  4 ++++
 .../java/org/apache/dubbo/config/spring/ReferenceBean.java   | 12 ++++++++++++
 .../annotation/ReferenceAnnotationBeanPostProcessor.java     |  5 +++++
 .../dubbo/config/spring/reference/ReferenceBeanSupport.java  |  8 +-------
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index fe25f46f1e..cfae48fe79 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -759,6 +759,10 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
         this.methods = (methods != null) ? new ArrayList<>(methods) : null;
     }
 
+    /**
+     * It is only used in native scenarios to get methodConfigs.
+     * @param methodsJson
+     */
     public void setMethodsJson(List<String> methodsJson) {
         if (methodsJson != null) {
             this.methods = new ArrayList<>();
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 e7c50bd7d9..be84f01477 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
@@ -22,6 +22,7 @@ import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.Assert;
 import org.apache.dubbo.common.utils.ClassUtils;
+import org.apache.dubbo.common.utils.JsonUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.ReferenceConfig;
 import org.apache.dubbo.config.spring.aot.AotWithSpringDetector;
@@ -468,4 +469,15 @@ public class ReferenceBean<T>
     public void setInterfaceName(String interfaceName) {
         this.interfaceName = interfaceName;
     }
+
+    /**
+     * It is only used in native scenarios to get referenceProps
+     * because attribute is not passed by BeanDefinition by default.
+     * @param referencePropsJson
+     */
+    public void setReferencePropsJson(String referencePropsJson) {
+        if (StringUtils.isNotEmpty(referencePropsJson)) {
+            this.referenceProps = JsonUtils.toJavaObject(referencePropsJson, 
Map.class);
+        }
+    }
 }
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 9cabb595d9..643a12f916 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
@@ -22,11 +22,13 @@ import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.ArrayUtils;
 import org.apache.dubbo.common.utils.Assert;
 import org.apache.dubbo.common.utils.ClassUtils;
+import org.apache.dubbo.common.utils.JsonUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.Reference;
 import org.apache.dubbo.config.spring.Constants;
 import org.apache.dubbo.config.spring.ReferenceBean;
+import org.apache.dubbo.config.spring.aot.AotWithSpringDetector;
 import org.apache.dubbo.config.spring.context.event.DubboConfigInitEvent;
 import org.apache.dubbo.config.spring.reference.ReferenceAttributes;
 import org.apache.dubbo.config.spring.reference.ReferenceBeanManager;
@@ -545,6 +547,9 @@ public class ReferenceAnnotationBeanPostProcessor extends 
AbstractAnnotationBean
         
beanDefinition.getPropertyValues().add(ReferenceAttributes.INTERFACE_CLASS, 
interfaceClass);
         
beanDefinition.getPropertyValues().add(ReferenceAttributes.INTERFACE_NAME, 
interfaceName);
 
+        if (AotWithSpringDetector.isAotProcessing()) {
+            beanDefinition.getPropertyValues().add("referencePropsJson", 
JsonUtils.toJson(attributes));
+        }
         // create decorated definition for reference bean, Avoid being 
instantiated when getting the beanType of
         // ReferenceBean
         // see 
org.springframework.beans.factory.support.AbstractBeanFactory#getTypeForFactoryBean()
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
index 24eab95001..513ae79d09 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/reference/ReferenceBeanSupport.java
@@ -21,7 +21,6 @@ import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.annotation.ProvidedBy;
 import org.apache.dubbo.config.spring.Constants;
 import org.apache.dubbo.config.spring.ReferenceBean;
-import org.apache.dubbo.config.spring.aot.AotWithSpringDetector;
 import org.apache.dubbo.config.spring.util.AnnotationUtils;
 import org.apache.dubbo.config.spring.util.DubboAnnotationUtils;
 import org.apache.dubbo.rpc.service.GenericService;
@@ -134,12 +133,7 @@ public class ReferenceBeanSupport {
 
     public static String generateReferenceKey(Map<String, Object> attributes, 
ApplicationContext applicationContext) {
 
-        String interfaceClass;
-        if (AotWithSpringDetector.useGeneratedArtifacts()) {
-            interfaceClass = (String) 
attributes.get(ReferenceAttributes.INTERFACE_NAME);
-        } else {
-            interfaceClass = (String) 
attributes.get(ReferenceAttributes.INTERFACE);
-        }
+        String interfaceClass = (String) 
attributes.get(ReferenceAttributes.INTERFACE);
         Assert.notEmptyString(interfaceClass, "No interface class or name 
found from attributes");
         String group = (String) attributes.get(ReferenceAttributes.GROUP);
         String version = (String) attributes.get(ReferenceAttributes.VERSION);

Reply via email to