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

kylixs pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit 7efcb572865c812dbfb51039192b7f602b69b8a3
Author: gongdewei <[email protected]>
AuthorDate: Fri Aug 20 15:36:45 2021 +0800

    Replace ExtensionFactory with ExtensionInjector
---
 .../dubbo/common/extension/ExtensionFactory.java   | 11 +++++--
 ...xtensionFactory.java => ExtensionInjector.java} | 10 +++---
 .../dubbo/common/extension/ExtensionLoader.java    | 30 ++++++++++-------
 ...Factory.java => AdaptiveExtensionInjector.java} | 20 ++++++------
 ...nsionFactory.java => SpiExtensionInjector.java} |  8 ++---
 ....apache.dubbo.common.extension.ExtensionFactory |  2 --
 ...apache.dubbo.common.extension.ExtensionInjector |  2 ++
 .../dubbo/common/extension/ExtensionFactory.java   |  3 +-
 .../dubbo/common/extension/ExtensionTest.java      | 14 ++++----
 .../dubbo/common/extension/MyExtensionFactory.java | 12 +++++++
 .../dubbo/config/spring/ConfigCenterBean.java      |  4 +--
 .../apache/dubbo/config/spring/ServiceBean.java    |  8 ++---
 .../DubboInfraBeanRegisterPostProcessor.java       |  4 +--
 ...onFactory.java => SpringExtensionInjector.java} | 12 +++----
 .../spring/status/DataSourceStatusChecker.java     |  4 +--
 .../config/spring/status/SpringStatusChecker.java  |  4 +--
 ....apache.dubbo.common.extension.ExtensionFactory |  1 -
 ...apache.dubbo.common.extension.ExtensionInjector |  1 +
 ...yTest.java => SpringExtensionInjectorTest.java} | 22 ++++++-------
 .../javaconfig/JavaConfigReferenceBeanTest.java    | 38 +++++++++++-----------
 .../spring/status/DataSourceStatusCheckerTest.java |  4 +--
 .../spring/status/SpringStatusCheckerTest.java     | 13 ++++----
 dubbo-distribution/dubbo-all/pom.xml               |  2 +-
 dubbo-distribution/dubbo-core-spi/pom.xml          |  2 +-
 .../org/apache/dubbo/rpc/support/MockInvoker.java  |  8 ++---
 25 files changed, 134 insertions(+), 105 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
index 32bb846..6eab44d 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
@@ -18,9 +18,16 @@ package org.apache.dubbo.common.extension;
 
 /**
  * ExtensionFactory
+ * @deprecated use {@link ExtensionInjector} instead
  */
-@SPI
-public interface ExtensionFactory {
+@Deprecated
+@SPI(scope = ExtensionScope.FRAMEWORK)
+public interface ExtensionFactory extends ExtensionInjector {
+
+    @Override
+    default <T> T getInstance(Class<T> type, String name) {
+        return getExtension(type, name);
+    }
 
     /**
      * Get extension.
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionInjector.java
similarity index 81%
copy from 
dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
copy to 
dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionInjector.java
index 32bb846..c550645 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionInjector.java
@@ -17,18 +17,18 @@
 package org.apache.dubbo.common.extension;
 
 /**
- * ExtensionFactory
+ * An injector to provide resources for SPI extension.
  */
-@SPI
-public interface ExtensionFactory {
+@SPI(scope = ExtensionScope.FRAMEWORK)
+public interface ExtensionInjector {
 
     /**
-     * Get extension.
+     * Get instance of specify type and name.
      *
      * @param type object type.
      * @param name object name.
      * @return object instance.
      */
-    <T> T getExtension(Class<T> type, String name);
+    <T> T getInstance(Class<T> type, String name);
 
 }
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index 4d30c22..feae2d4 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -98,7 +98,7 @@ public class ExtensionLoader<T> {
 
     private final Class<?> type;
 
-    private final ExtensionFactory objectFactory;
+    private final ExtensionInjector injector;
 
     private final ConcurrentMap<Class<?>, String> cachedNames = new 
ConcurrentHashMap<>();
 
@@ -161,17 +161,16 @@ public class ExtensionLoader<T> {
         this.extensionDirector = extensionDirector;
         this.extensionPostProcessors = 
extensionDirector.getExtensionPostProcessors();
         this.type = type;
-        this.objectFactory = (type == ExtensionFactory.class ? null : 
extensionDirector.getExtensionLoader(ExtensionFactory.class)
+        this.injector = (type == ExtensionInjector.class ? null : 
extensionDirector.getExtensionLoader(ExtensionInjector.class)
             .getAdaptiveExtension());
     }
 
     /**
-     * @deprecated get extension loader from extension director of some module.
-     *
      * @see ApplicationModel#getExtensionDirector()
      * @see FrameworkModel#getExtensionDirector()
      * @see ModuleModel#getExtensionDirector()
      * @see ExtensionDirector#getExtensionLoader(java.lang.Class)
+     * @deprecated get extension loader from extension director of some module.
      */
     @Deprecated
     public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) {
@@ -749,7 +748,7 @@ public class ExtensionLoader<T> {
 
     private T injectExtension(T instance) {
 
-        if (objectFactory == null) {
+        if (injector == null) {
             return instance;
         }
 
@@ -771,7 +770,7 @@ public class ExtensionLoader<T> {
 
                 try {
                     String property = getSetterProperty(method);
-                    Object object = objectFactory.getExtension(pt, property);
+                    Object object = injector.getInstance(pt, property);
                     if (object != null) {
                         method.invoke(instance, object);
                     }
@@ -851,16 +850,25 @@ public class ExtensionLoader<T> {
         Map<String, Class<?>> extensionClasses = new HashMap<>();
 
         for (LoadingStrategy strategy : strategies) {
-            loadDirectory(extensionClasses, strategy.directory(), 
type.getName(), strategy.preferExtensionClassLoader(),
-                strategy.overridden(), strategy.excludedPackages());
-            String oldType = this.type.getName().replace("org.apache", 
"com.alibaba");
-            loadDirectory(extensionClasses, strategy.directory(), oldType, 
strategy.preferExtensionClassLoader(),
-                strategy.overridden(), strategy.excludedPackages());
+            loadDirectory(extensionClasses, strategy, type.getName());
+
+            // compatible with old ExtensionFactory
+            if (this.type == ExtensionInjector.class) {
+                loadDirectory(extensionClasses, strategy, 
ExtensionFactory.class.getName());
+            }
         }
 
         return extensionClasses;
     }
 
+    private void loadDirectory(Map<String, Class<?>> extensionClasses, 
LoadingStrategy strategy, String type) {
+        loadDirectory(extensionClasses, strategy.directory(), type, 
strategy.preferExtensionClassLoader(),
+            strategy.overridden(), strategy.excludedPackages());
+        String oldType = type.replace("org.apache", "com.alibaba");
+        loadDirectory(extensionClasses, strategy.directory(), oldType, 
strategy.preferExtensionClassLoader(),
+            strategy.overridden(), strategy.excludedPackages());
+    }
+
     /**
      * extract and cache default extension name if exists
      */
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionInjector.java
similarity index 69%
rename from 
dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java
rename to 
dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionInjector.java
index d136ebc..8c76f50 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionInjector.java
@@ -17,7 +17,7 @@
 package org.apache.dubbo.common.extension.factory;
 
 import org.apache.dubbo.common.extension.Adaptive;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 
 import java.util.ArrayList;
@@ -25,16 +25,16 @@ import java.util.Collections;
 import java.util.List;
 
 /**
- * AdaptiveExtensionFactory
+ * AdaptiveExtensionInjector
  */
 @Adaptive
-public class AdaptiveExtensionFactory implements ExtensionFactory {
+public class AdaptiveExtensionInjector implements ExtensionInjector {
 
-    private final List<ExtensionFactory> factories;
+    private final List<ExtensionInjector> factories;
 
-    public AdaptiveExtensionFactory() {
-        ExtensionLoader<ExtensionFactory> loader = 
ExtensionLoader.getExtensionLoader(ExtensionFactory.class);
-        List<ExtensionFactory> list = new ArrayList<ExtensionFactory>();
+    public AdaptiveExtensionInjector() {
+        ExtensionLoader<ExtensionInjector> loader = 
ExtensionLoader.getExtensionLoader(ExtensionInjector.class);
+        List<ExtensionInjector> list = new ArrayList<ExtensionInjector>();
         for (String name : loader.getSupportedExtensions()) {
             list.add(loader.getExtension(name));
         }
@@ -42,9 +42,9 @@ public class AdaptiveExtensionFactory implements 
ExtensionFactory {
     }
 
     @Override
-    public <T> T getExtension(Class<T> type, String name) {
-        for (ExtensionFactory factory : factories) {
-            T extension = factory.getExtension(type, name);
+    public <T> T getInstance(Class<T> type, String name) {
+        for (ExtensionInjector factory : factories) {
+            T extension = factory.getInstance(type, name);
             if (extension != null) {
                 return extension;
             }
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionInjector.java
similarity index 86%
rename from 
dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java
rename to 
dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionInjector.java
index 46cbe19..746e3ce 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionInjector.java
@@ -16,17 +16,17 @@
  */
 package org.apache.dubbo.common.extension.factory;
 
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.common.extension.SPI;
 
 /**
- * SpiExtensionFactory
+ * SpiExtensionInjector
  */
-public class SpiExtensionFactory implements ExtensionFactory {
+public class SpiExtensionInjector implements ExtensionInjector {
 
     @Override
-    public <T> T getExtension(Class<T> type, String name) {
+    public <T> T getInstance(Class<T> type, String name) {
         if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {
             ExtensionLoader<T> loader = 
ExtensionLoader.getExtensionLoader(type);
             if (!loader.getSupportedExtensions().isEmpty()) {
diff --git 
a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
 
b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
deleted file mode 100644
index 094382f..0000000
--- 
a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-adaptive=org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory
-spi=org.apache.dubbo.common.extension.factory.SpiExtensionFactory
\ No newline at end of file
diff --git 
a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
 
b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
new file mode 100644
index 0000000..3a4e291
--- /dev/null
+++ 
b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
@@ -0,0 +1,2 @@
+adaptive=org.apache.dubbo.common.extension.factory.AdaptiveExtensionInjector
+spi=org.apache.dubbo.common.extension.factory.SpiExtensionInjector
diff --git 
a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
 
b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
index bc0f0b2..2a2f35f 100644
--- 
a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
+++ 
b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
@@ -16,10 +16,11 @@
  */
 package com.alibaba.dubbo.common.extension;
 
+import org.apache.dubbo.common.extension.ExtensionScope;
 import org.apache.dubbo.common.extension.SPI;
 
 @Deprecated
-@SPI
+@SPI(scope = ExtensionScope.FRAMEWORK)
 public interface ExtensionFactory extends 
org.apache.dubbo.common.extension.ExtensionFactory {
 
 }
diff --git 
a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
 
b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
index 2b7a5c8..b126d6a 100644
--- 
a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
+++ 
b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
@@ -27,13 +27,15 @@ public class ExtensionTest {
     @Test
     public void testExtensionFactory() {
         try {
-            ExtensionFactory factory = 
ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("myfactory");
-            Assertions.assertTrue(factory instanceof ExtensionFactory);
-            Assertions.assertTrue(factory instanceof 
com.alibaba.dubbo.common.extension.ExtensionFactory);
-            Assertions.assertTrue(factory instanceof MyExtensionFactory);
+            ExtensionInjector myfactory = 
ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getExtension("myfactory");
+            Assertions.assertTrue(myfactory instanceof ExtensionInjector);
+            Assertions.assertTrue(myfactory instanceof ExtensionFactory);
+            Assertions.assertTrue(myfactory instanceof 
com.alibaba.dubbo.common.extension.ExtensionFactory);
+            Assertions.assertTrue(myfactory instanceof MyExtensionFactory);
 
-            ExtensionFactory spring = 
ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("spring");
-            Assertions.assertTrue(spring instanceof ExtensionFactory);
+            ExtensionInjector spring = 
ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getExtension("spring");
+            Assertions.assertTrue(spring instanceof ExtensionInjector);
+            Assertions.assertFalse(spring instanceof ExtensionFactory);
             Assertions.assertFalse(spring instanceof 
com.alibaba.dubbo.common.extension.ExtensionFactory);
         } catch (IllegalArgumentException expected) {
             fail();
diff --git 
a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
 
b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
index f9602b4..d8bc822 100644
--- 
a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
+++ 
b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
@@ -22,6 +22,18 @@ public class MyExtensionFactory implements ExtensionFactory {
 
     @Override
     public <T> T getExtension(Class<T> type, String name) {
+        if (type == InjectObject.class) {
+            return (T) new InjectObject(name);
+        }
         return null;
     }
+
+
+    public static class InjectObject {
+        private String name;
+
+        public InjectObject(String name) {
+            this.name = name;
+        }
+    }
 }
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
index 84ddac5..6374cdb 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -19,7 +19,7 @@ package org.apache.dubbo.config.spring;
 import org.apache.dubbo.common.config.ConfigurationUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.config.ConfigCenterConfig;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.context.ApplicationContext;
@@ -46,7 +46,7 @@ public class ConfigCenterBean extends ConfigCenterConfig 
implements ApplicationC
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
-        SpringExtensionFactory.addApplicationContext(applicationContext);
+        SpringExtensionInjector.addApplicationContext(applicationContext);
     }
 
     @Override
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index ca3e85c..94af84a 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -21,7 +21,7 @@ import org.apache.dubbo.config.ServiceConfig;
 import org.apache.dubbo.config.annotation.Service;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
 import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 import org.apache.dubbo.config.support.Parameter;
 
 import org.springframework.aop.support.AopUtils;
@@ -65,8 +65,8 @@ public class ServiceBean<T> extends ServiceConfig<T> 
implements InitializingBean
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
-        //TODO remove SpringExtensionFactory.addApplicationContext();
-        SpringExtensionFactory.addApplicationContext(applicationContext);
+        //TODO remove SpringExtensionInjector.addApplicationContext();
+        SpringExtensionInjector.addApplicationContext(applicationContext);
     }
 
     @Override
@@ -126,7 +126,7 @@ public class ServiceBean<T> extends ServiceConfig<T> 
implements InitializingBean
     @Override
     public void destroy() throws Exception {
         // no need to call unexport() here, see
-        // 
org.apache.dubbo.config.spring.extension.SpringExtensionFactory.ShutdownHookListener
+        // 
org.apache.dubbo.config.spring.extension.SpringExtensionInjector.ShutdownHookListener
     }
 
     // merged from dubbox
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
index d223ca9..f6c9b19 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
@@ -18,7 +18,7 @@ package org.apache.dubbo.config.spring.context;
 
 import org.apache.dubbo.config.context.ConfigManager;
 import 
org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 import org.apache.dubbo.config.spring.util.DubboBeanUtils;
 import org.apache.dubbo.config.spring.util.EnvironmentUtils;
 import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -83,6 +83,6 @@ public class DubboInfraBeanRegisterPostProcessor implements 
BeanDefinitionRegist
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) 
throws BeansException {
         this.applicationContext = applicationContext;
-        SpringExtensionFactory.addApplicationContext(applicationContext);
+        SpringExtensionInjector.addApplicationContext(applicationContext);
     }
 }
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
similarity index 90%
rename from 
dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
rename to 
dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
index 27eec78..09bf0dd 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
@@ -17,7 +17,7 @@
 package org.apache.dubbo.config.spring.extension;
 
 import org.apache.dubbo.common.context.Lifecycle;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
 import org.apache.dubbo.common.extension.SPI;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
@@ -31,10 +31,10 @@ import 
org.springframework.context.ConfigurableApplicationContext;
 import java.util.Set;
 
 /**
- * SpringExtensionFactory
+ * SpringExtensionInjector
  */
-public class SpringExtensionFactory implements ExtensionFactory, Lifecycle {
-    private static final Logger logger = 
LoggerFactory.getLogger(SpringExtensionFactory.class);
+public class SpringExtensionInjector implements ExtensionInjector, Lifecycle {
+    private static final Logger logger = 
LoggerFactory.getLogger(SpringExtensionInjector.class);
 
     private static final Set<ApplicationContext> CONTEXTS = new 
ConcurrentHashSet<ApplicationContext>();
 
@@ -62,9 +62,9 @@ public class SpringExtensionFactory implements 
ExtensionFactory, Lifecycle {
 
     @Override
     @SuppressWarnings("unchecked")
-    public <T> T getExtension(Class<T> type, String name) {
+    public <T> T getInstance(Class<T> type, String name) {
 
-        //SPI should be get from SpiExtensionFactory
+        //SPI should be get from SpiExtensionInjector
         if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {
             return null;
         }
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
index 28323bb..c28db37 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
@@ -22,7 +22,7 @@ import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.common.status.StatusChecker;
 import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 
 import org.springframework.context.ApplicationContext;
 
@@ -45,7 +45,7 @@ public class DataSourceStatusChecker implements StatusChecker 
{
     @Override
     public Status check() {
         Optional<ApplicationContext> context =
-                
SpringExtensionFactory.getContexts().stream().filter(Objects::nonNull).findFirst();
+                
SpringExtensionInjector.getContexts().stream().filter(Objects::nonNull).findFirst();
 
         if (!context.isPresent()) {
             return new Status(Status.Level.UNKNOWN);
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
index c259a78..cae9260 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
@@ -21,7 +21,7 @@ import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.common.status.StatusChecker;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.Lifecycle;
@@ -40,7 +40,7 @@ public class SpringStatusChecker implements StatusChecker {
     @Override
     public Status check() {
         ApplicationContext context = null;
-        for (ApplicationContext c : SpringExtensionFactory.getContexts()) {
+        for (ApplicationContext c : SpringExtensionInjector.getContexts()) {
             // [Issue] SpringStatusChecker execute errors on non-XML Spring 
configuration
             // issue : https://github.com/apache/dubbo/issues/3615
             if(c instanceof GenericWebApplicationContext) { // ignore 
GenericXmlApplicationContext
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
 
b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
deleted file mode 100644
index 4ac9db2..0000000
--- 
a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+++ /dev/null
@@ -1 +0,0 @@
-spring=org.apache.dubbo.config.spring.extension.SpringExtensionFactory
\ No newline at end of file
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
 
b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
new file mode 100644
index 0000000..c5ef410
--- /dev/null
+++ 
b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
@@ -0,0 +1 @@
+spring=org.apache.dubbo.config.spring.extension.SpringExtensionInjector
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
similarity index 78%
rename from 
dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
rename to 
dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
index ca70f1f..71e98d7 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.config.spring.extension;
 
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
 import org.apache.dubbo.config.spring.api.DemoService;
@@ -34,9 +34,9 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration
-public class SpringExtensionFactoryTest {
+public class SpringExtensionInjectorTest {
 
-    private SpringExtensionFactory springExtensionFactory = new 
SpringExtensionFactory();
+    private SpringExtensionInjector springExtensionFactory = new 
SpringExtensionInjector();
     private AnnotationConfigApplicationContext context1;
     private AnnotationConfigApplicationContext context2;
 
@@ -44,8 +44,8 @@ public class SpringExtensionFactoryTest {
     public void init() {
         DubboBootstrap.reset();
 
-        // init SpringExtensionFactory
-        
ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("spring");
+        // init SpringExtensionInjector
+        
ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getExtension("spring");
 
         context1 = new AnnotationConfigApplicationContext();
         context1.setDisplayName("Context1");
@@ -55,28 +55,28 @@ public class SpringExtensionFactoryTest {
         context2.setDisplayName("Context2");
         context2.register(BeanForContext2.class);
         context2.refresh();
-        SpringExtensionFactory.addApplicationContext(context1);
-        SpringExtensionFactory.addApplicationContext(context2);
+        SpringExtensionInjector.addApplicationContext(context1);
+        SpringExtensionInjector.addApplicationContext(context2);
     }
 
     @AfterEach
     public void destroy() {
         context1.close();
         context2.close();
-        SpringExtensionFactory.clearContexts();
+        SpringExtensionInjector.clearContexts();
     }
 
     @Test
     public void testGetExtensionBySPI() {
-        Protocol protocol = 
springExtensionFactory.getExtension(Protocol.class, "protocol");
+        Protocol protocol = springExtensionFactory.getInstance(Protocol.class, 
"protocol");
         Assertions.assertNull(protocol);
     }
 
     @Test
     public void testGetExtensionByName() {
-        DemoService bean = 
springExtensionFactory.getExtension(DemoService.class, "bean1");
+        DemoService bean = 
springExtensionFactory.getInstance(DemoService.class, "bean1");
         Assertions.assertNotNull(bean);
-        HelloService hello = 
springExtensionFactory.getExtension(HelloService.class, "hello");
+        HelloService hello = 
springExtensionFactory.getInstance(HelloService.class, "hello");
         Assertions.assertNotNull(hello);
     }
 
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
index 805b09a..c0cec6c 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
@@ -21,11 +21,11 @@ import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.Reference;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
 import org.apache.dubbo.config.spring.ReferenceBean;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 import org.apache.dubbo.config.spring.registrycenter.ZooKeeperServer;
 import org.apache.dubbo.config.spring.api.DemoService;
 import org.apache.dubbo.config.spring.api.HelloService;
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
 import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
 import org.apache.dubbo.config.spring.reference.ReferenceBeanBuilder;
 import org.apache.dubbo.rpc.service.GenericException;
@@ -71,7 +71,7 @@ public class JavaConfigReferenceBeanTest {
 
     @Test
     public void testAnnotationAtField() {
-        Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
         AnnotationConfigApplicationContext context = new 
AnnotationConfigApplicationContext(CommonConfig.class,
             AnnotationAtFieldConfiguration.class);
 
@@ -88,7 +88,7 @@ public class JavaConfigReferenceBeanTest {
         Assertions.assertEquals(HelloService.class.getName(), 
referenceBean.getServiceInterface());
 
         context.close();
-        Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
     }
 
     @Test
@@ -116,7 +116,7 @@ public class JavaConfigReferenceBeanTest {
 
     @Test
     public void testAnnotationBean() {
-        Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
         AnnotationConfigApplicationContext context = new 
AnnotationConfigApplicationContext(CommonConfig.class,
                 AnnotationBeanConfiguration.class);
 
@@ -133,12 +133,12 @@ public class JavaConfigReferenceBeanTest {
         Assertions.assertEquals(HelloService.class.getName(), 
referenceBean.getServiceInterface());
 
         context.close();
-        Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
     }
 
     @Test
     public void testGenericServiceAnnotationBean() {
-        Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
         AnnotationConfigApplicationContext context = new 
AnnotationConfigApplicationContext(CommonConfig.class,
             GenericServiceAnnotationBeanConfiguration.class);
 
@@ -169,12 +169,12 @@ public class JavaConfigReferenceBeanTest {
         Assertions.assertEquals("Hello Dubbo", sayHelloResult);
 
         context.close();
-        Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
     }
 
     @Test
     public void testReferenceBean() {
-        Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
         AnnotationConfigApplicationContext context = new 
AnnotationConfigApplicationContext(CommonConfig.class,
                 ReferenceBeanConfiguration.class);
 
@@ -194,12 +194,12 @@ public class JavaConfigReferenceBeanTest {
         Assertions.assertEquals(DemoService.class.getName(), 
demoServiceReferenceBean.getServiceInterface());
 
         context.close();
-        Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
     }
 
     @Test
     public void testGenericServiceReferenceBean() {
-        Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
         AnnotationConfigApplicationContext context = new 
AnnotationConfigApplicationContext(CommonConfig.class,
             GenericServiceReferenceBeanConfiguration.class);
 
@@ -221,14 +221,14 @@ public class JavaConfigReferenceBeanTest {
         Assertions.assertEquals(HelloService.class.getName(), 
genericHelloServiceReferenceBean.getServiceInterface());
 
         context.close();
-        Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+        Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
     }
 
     @Test
     public void testRawReferenceBean() {
         AnnotationConfigApplicationContext context = null;
         try {
-            Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
             context = new 
AnnotationConfigApplicationContext(CommonConfig.class, 
ReferenceBeanWithoutGenericTypeConfiguration.class);
             Assertions.fail("Should not load application");
 
@@ -240,7 +240,7 @@ public class JavaConfigReferenceBeanTest {
             if (context != null) {
                 context.close();
             }
-            Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
         }
 
     }
@@ -249,7 +249,7 @@ public class JavaConfigReferenceBeanTest {
     public void testInconsistentBean() {
         AnnotationConfigApplicationContext context = null;
         try {
-            Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
             context = new 
AnnotationConfigApplicationContext(CommonConfig.class, 
InconsistentBeanConfiguration.class);
             Assertions.fail("Should not load application");
         } catch (Exception e) {
@@ -261,7 +261,7 @@ public class JavaConfigReferenceBeanTest {
             if (context != null) {
                 context.close();
             }
-            Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
         }
     }
 
@@ -269,7 +269,7 @@ public class JavaConfigReferenceBeanTest {
     public void testMissingGenericTypeBean() {
         AnnotationConfigApplicationContext context = null;
         try {
-            Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
             context = new 
AnnotationConfigApplicationContext(CommonConfig.class, 
MissingGenericTypeAnnotationBeanConfiguration.class);
             Assertions.fail("Should not load application");
         } catch (Exception e) {
@@ -280,7 +280,7 @@ public class JavaConfigReferenceBeanTest {
             if (context != null) {
                 context.close();
             }
-            Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
         }
     }
 
@@ -288,7 +288,7 @@ public class JavaConfigReferenceBeanTest {
     public void testMissingInterfaceTypeBean() {
         AnnotationConfigApplicationContext context = null;
         try {
-            Assertions.assertEquals(0, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(0, 
SpringExtensionInjector.getContexts().size());
             context = new 
AnnotationConfigApplicationContext(CommonConfig.class, 
MissingInterfaceTypeAnnotationBeanConfiguration.class);
             Assertions.fail("Should not load application");
         } catch (Exception e) {
@@ -298,7 +298,7 @@ public class JavaConfigReferenceBeanTest {
             if (context != null) {
                 context.close();
             }
-            Assertions.assertEquals(1, 
SpringExtensionFactory.getContexts().size());
+            Assertions.assertEquals(1, 
SpringExtensionInjector.getContexts().size());
         }
     }
 
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
index b12d2d4..36985f6 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
@@ -18,7 +18,7 @@ package org.apache.dubbo.config.spring.status;
 
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -50,7 +50,7 @@ public class DataSourceStatusCheckerTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        SpringExtensionFactory.clearContexts();
+        SpringExtensionInjector.clearContexts();
         initMocks(this);
         this.dataSourceStatusChecker = new DataSourceStatusChecker();
         new ServiceBean<Object>().setApplicationContext(applicationContext);
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
index 288a0fb..d7e1a6d 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
@@ -18,12 +18,11 @@ package org.apache.dubbo.config.spring.status;
 
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
@@ -52,7 +51,7 @@ public class SpringStatusCheckerTest {
 
     @AfterEach
     public void tearDown() throws Exception {
-        SpringExtensionFactory.clearContexts();
+        SpringExtensionInjector.clearContexts();
         Mockito.reset(applicationContext);
     }
 
@@ -65,7 +64,7 @@ public class SpringStatusCheckerTest {
 
     @Test
     public void testWithLifeCycleRunning() {
-        SpringExtensionFactory.clearContexts();
+        SpringExtensionInjector.clearContexts();
         ApplicationLifeCycle applicationLifeCycle = 
mock(ApplicationLifeCycle.class);
         new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
         given(applicationLifeCycle.getConfigLocations()).willReturn(new 
String[]{"test1", "test2"});
@@ -79,7 +78,7 @@ public class SpringStatusCheckerTest {
 
     @Test
     public void testWithoutLifeCycleRunning() {
-        SpringExtensionFactory.clearContexts();
+        SpringExtensionInjector.clearContexts();
         ApplicationLifeCycle applicationLifeCycle = 
mock(ApplicationLifeCycle.class);
         new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
         given(applicationLifeCycle.isRunning()).willReturn(false);
@@ -95,9 +94,9 @@ public class SpringStatusCheckerTest {
 
     @Test
     public void testGenericWebApplicationContext() {
-        SpringExtensionFactory.clearContexts();
+        SpringExtensionInjector.clearContexts();
         GenericWebApplicationContext context = new 
GenericWebApplicationContext();
-        SpringExtensionFactory.addApplicationContext(context);
+        SpringExtensionInjector.addApplicationContext(context);
         SpringStatusChecker checker = new SpringStatusChecker();
         Status status = checker.check();
         Assertions.assertEquals(Status.Level.UNKNOWN, status.getLevel());
diff --git a/dubbo-distribution/dubbo-all/pom.xml 
b/dubbo-distribution/dubbo-all/pom.xml
index be8d15d..24bde3b 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -462,7 +462,7 @@
                                 <transformer
                                         
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                     <resource>
-                                        
META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+                                        
META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
                                     </resource>
                                 </transformer>
                                 <transformer
diff --git a/dubbo-distribution/dubbo-core-spi/pom.xml 
b/dubbo-distribution/dubbo-core-spi/pom.xml
index 7e9ee1d..0717705 100644
--- a/dubbo-distribution/dubbo-core-spi/pom.xml
+++ b/dubbo-distribution/dubbo-core-spi/pom.xml
@@ -144,7 +144,7 @@
                                 <transformer
                                         
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                     <resource>
-                                        
META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+                                        
META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
                                     </resource>
                                 </transformer>
                                 <transformer
diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
index 41a5545..f6ba4c5 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
@@ -17,7 +17,7 @@
 package org.apache.dubbo.rpc.support;
 
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.common.utils.ArrayUtils;
 import org.apache.dubbo.common.utils.ConfigUtils;
@@ -188,9 +188,9 @@ final public class MockInvoker<T> implements Invoker<T> {
             mockClass = ReflectUtils.forName(mockService);
         } catch (Exception e) {
             if (!isDefault) {// does not check Spring bean if it is default 
config.
-                ExtensionFactory extensionFactory =
-                        
ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension();
-                Object obj = extensionFactory.getExtension(serviceType, 
mockService);
+                ExtensionInjector extensionFactory =
+                        
ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getAdaptiveExtension();
+                Object obj = extensionFactory.getInstance(serviceType, 
mockService);
                 if (obj != null) {
                     return obj;
                 }

Reply via email to