美文网首页
dubbo从零单排-深入篇(2、dubbo是如何嵌入spring

dubbo从零单排-深入篇(2、dubbo是如何嵌入spring

作者: 费列罗与小明 | 来源:发表于2019-10-29 19:40 被阅读0次

    每个组件嵌入到spring体系都需要一个入口,dubbo也不例外。而dubbo的入口类是AnnotationBean,一切都是由它开始的。

    AnnotationBean继承类

    可以看到AnnotationBean继承于BeanFactoryPostProcessor、BeanPostProcessor。

    BeanFactoryPostProcessor的作用是扫描有声明com.alibaba.dubbo.config.annotation.Service注解的bean(关于BeanFactoryPostProcessor原理,请详见 spring-灵魂深处 关于BeanFactoryPostProcessor)。

    BeanPostProcessor的作用是在spring装载bean的时候,在装载之前和之后分别进行了操作(关于BeanPostProcessor的原理,请详见spring-灵魂深处 关于BeanPostProcessor)。而BeanPostProcessor接口的方法如下图:

    BeanPostProcessor接口

    这里不解释BeanPostProcessor的原理,只做大概讲解。

    postProcessBeforeInitialization()方法用于初始化服务调用者consumer。当装载spring bean扫描到字段有注解Reference的时候开始相关的初始化,而dubbo的consumer仅仅只是一个接口,没有具体的实现类,没错这个方法就是在spring装载bean的时候返回一个代理对象(详情请见dubbo从零单排-ReferenceBean)继而完成了consumer的初始化。

    postProcessAfterInitialization()方法用于初始化服务生产者provider。当装载spring bean扫描到字段有注解Service的时候开始dubbo服务端的初始化(详情请见dubbo从零单排-ServiceBean)。

    初始化完consumer和provider之后,继而完成了的dubbo组件的初始化。

    所以综上的结论是,通过

    声明的bean

    声明AnnotationBean,当spring启动时,会判断该bean是否有继承于BeanFactoryPostProcessor、BeanPostProcessor,如果有的话则自动成为spring体系的一员,成为加载解析第三方spring组件的bean,通过上述processor的方法。

    相关文章

      网友评论

          本文标题:dubbo从零单排-深入篇(2、dubbo是如何嵌入spring

          本文链接:https://www.haomeiwen.com/subject/twbgvctx.html