一、SPI机制:
1、首先创建ExtensionLoader
2、然会根据ExtensionLoader获取和搜索类的实例
(1)类上有@Adaptive注解的,直接创建该类的实例
(2)方法上有@Adaptive注解的,直接创建该类的代理类,有相应的代理模板
根据代理类的实现获取真正的实现类
ExtensionLoader.getExtensionLoader(Container.class)
1、ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension()获取适应能强的实力(两种方式)
2、ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(name)获取指定的实例
3、@SPI获取默认的实例
AdaptiveExtensionFactory【SpiExtensionFactory,SpringExtensionFactory】依据容器进行依赖注入
Wrapper的dubbo的AOP机制
IOC+AOP+DI
单例模式、工程模式、动态代理模式、装饰器模式
dubbo的动态生成代码机制
ServiceBean发布服务