1 该方面的源码分析收获
分析源码的集成主要是方便我们平时开发类似组件的时候可以将代码写的更加优雅更加灵活。像dubbo、spring全家桶等等的组件都在和spring集成的时候,易用非常高、可扩展性非常高,一个注解或者一个配置就可以开启组件的上下文的启用和对应功能的使用。而且通过简单的定制就可以实现自定义某些功能。分析Dubbo的上下文集成可以作为我们的一个参考。分析源码像源码看齐。模仿多啦一定可以超越。很多细节就不过多分析,主要是思路。大师或源码最牛逼的是思想、编程思想。
2 主要的集成思概要
- 所有的配置集中到一个初始化类的一个初始化方法中
- 自定义实现 ImportBeanDefinitionRegistrar类,registerBeanDefinitions 方法调用汇总所有初始化操作的总初始化方法
- 将ImportBeanDefinitionRegistrar自定义实现类通过@Import 注解注入到Spring 环境
- @Import引入的时机是在一个注解上,然后只要在Springboot的启动类上控制该注解进行上下文的控制
3 源码分析
@EnableDubbo 注解开启Dubbo的上下文
@EnableDubboConfig @DubboComponentScan
两个注解进行上下文的初始化 ,从@EnableDubboConfig入手
import倒入DubboConfigConfigurationRegistrar类到Spring环境中
DubboConfigConfigurationRegistrar类是ImportBeanDefinitionRegistrar的自定义类,所以在注入Springs上下文的时候会执行registerBeanDefinitions,调用汇总的调用方法进行汇总配置初始化调用,将必要的bean集成到spring
最终注册必要的Listener、PostProcessor、Initializar等类完成上下文初始化