通过ExtensionLoader.getExtensionLoader(FruitGranter.class).getAdaptiveExtension()获取一个FrutiGranter对象
1.调用 getAdaptiveExtensionClass 方法获取自适应拓展 Class 对象
1.调用 getExtensionClasses 获取所有的拓展类
2.检查缓存,若缓存不为空,则返回缓存
3.若缓存为空,则调用 createAdaptiveExtensionClass 创建自适应拓展类
1.构建自适应拓展代码
1.Adaptive注解检测
2.生成类
3.生成方法
1.无 Adaptive 注解方法代码生成逻辑
2.获取URL数据
3.获取Adapative注解值
4.检查Invocation参数
5.生成拓展名获取逻辑
6.生成拓展加载与目标方法调用逻辑
7.生成完整的方法
2.获取编译器实现类
3.编译代码,生成class
2.通过反射进行实例化
3.调用 injectExtension 方法向拓展实例中注入依赖