@@ -51,8 +51,9 @@ SimpleExt ext = ExtensionLoader.getExtensionLoader(SimpleExt.class).getDefaultEx
5151 }
5252 return loader;
5353 }
54- ```Java
55- getExtensionLoader方法首先回去判断EXTENSION_LOADERS 缓存中是否已经缓存了该类型的扩展点加载器,如果没有则new 一个该类型的ExtensionLoader并添加进EXTENSION_LOADERS中。但需要注意的是ExtensionLoader的构造方法
54+ ```
55+ 56+ getExtensionLoader方法首先会去判断EXTENSION_LOADERS缓存中是否已经缓存了该类型的扩展点加载器,如果没有则new一个该类型的ExtensionLoader并添加进EXTENSION_LOADERS中。但需要注意的是ExtensionLoader的构造方法
5657中,是会先创建默认的ExtensionFactory类型的ExtensionLoader对象,然后调用getAdaptiveExtension()方法创建适配类型的扩展点实现类。
5758
5859``` Java
@@ -112,7 +113,7 @@ getExtensionLoader方法首先回去判断EXTENSION_LOADERS缓存中是否已经
112113 loadDirectory(extensionClasses, strategy. directory(), type. getName(). replace(" org.apache" , " com.alibaba" ), strategy. preferExtensionClassLoader(), strategy. overridden(), strategy. excludedPackages());
113114 }
114115
115- // 这里只会返回非Adaptive和非Wrapper类型的扩展点实现类Class,因为Adaptive会被缓存到cachedAdaptiveClasses缓存中,儿Wrapper类型的类会被缓存到cachedWrapperClasses缓存中 。
116+ // 这里只会返回非Adaptive和非Wrapper类型的扩展点实现类Class,因为Adaptive会被缓存到cachedAdaptiveClasses缓存中,而Wrapper类型的类会被缓存到cachedWrapperClasses缓存中 。
116117 return extensionClasses;
117118 }
118119
@@ -267,10 +268,10 @@ public class AdaptiveExtensionFactory implements ExtensionFactory {
267268}
268269```
269270
270- 1 中逻辑是这样的,调用ExtensionLoader#getSupportedExtensions()回去加载ExtensionFactory所有的扩展点实现类 ,并返回一个扩展点名称作为Key,扩展点实现类Class对象为Value的Map集合,
271+ 1 中逻辑是这样的,调用ExtensionLoader#getSupportedExtensions()会去加载ExtensionFactory所有的扩展点实现类 ,并返回一个扩展点名称作为Key,扩展点实现类Class对象为Value的Map集合,
271272在上面的SPI配置文件中已经展示出来了,所以这里获取到的是spi。
272273
273- // 有人可能会问,上面的SPI配置文件不是还有一个adaptive吗?为什么没加载进来呢?这是因为getSupportedExtension()中实际是调用getExtensionClasses()方法去获取Map集合,而其底层是去从cachedClasses缓存中
274+ 有人可能会问,上面的SPI配置文件不是还有一个adaptive吗?为什么没加载进来呢?这是因为getSupportedExtension()中实际是调用getExtensionClasses()方法去获取Map集合,而其底层是去从cachedClasses缓存中
274275获取,而adaptive扩展点实现类是缓存在了cachedAdaptiveClass中的。
275276
276277
@@ -385,4 +386,6 @@ public class SimpleExt$Adaptive implements org.apache.dubbo.common.extension.ext
385386
386387### 3. @Activate 注解
387388
389+ TODO
390+ 388391
0 commit comments