抽空搭了一下dubbo脚手架,发现网上的教程五花八门,所以自己研究了一下dubbo注入service的原理,在这里记录一下。
我用的是
springboot 2.4.3、zookeeper 3.5.9、dubbo 2.7.8
首先了解一下spring的BeanDefinitionRegistryPostProcessor和dubbo包的ServiceClassPostProcessor;
BeanDefinitionRegistryPostProcessor:spring中自定义bean重要的类,它负责在后置处理开始之前注册实现了BeanDefinitionRegistryPostProcessor的bean(具体的介绍可以看这篇文章:BeanDefinitionRegistryPostProcessor——动态注册Bean到Spring容器)
ServiceClassPostProcessor:实现了BeanDefinitionRegistryPostProcessor接口,注册dubbo service的核心类。
下面说一下几个关键步骤:
1.spring会获取实现了BeanDefinitionRegistryPostProcessor接口的bean:
2.spring依次执行BeanDefinitionRegistryPostProcessor的postProcessBeanDefinitionRegistry方法: