Dubbo服务注册到Zookeeper,对外提供服务的实际类 ref(如:SleepServiceImpl)保存在哪里
Dubbo服务注册到Zookeeper,其注册的内容为实际对外提供的服务的实现。这个实现保存在哪里(至于具体客户端使用时怎么取后后续阐述)?可以看看Dubbo如何处理的。
对于@DubboService注解的bean,其实现的父类接口的注册由ServiceClassPostProcessor的registerServiceBean方法提供:
实际上就是通过实现类的BeanDefinition为接口类的bean——ServiceBean赋值,并保存到BeanDefinitionMap。但是目前看这个实现有个小问题:如果一个服务接口有多个实现,只能保存第一个被注册的实现类名作为ref等值的内容,后续无论识别多少其实都不会注册到BeanDefinitionMap中了。在实际的生产中一个服务接口只有一个服务实现是个小概率事件吧。
这个问题Dubbo怎么处理的?请听下回分解O(∩_∩)O哈哈~