服务发现触发
ReferenceBean
实现了FactoryBean
、InitializingBean
,在reference标签中配置init属性就会触发立即初始化(afterPropertiesSet()
方法中),如果没有配置则会延迟初始化直到通过getBean()
调用getObject()
完成。
真正的服务发现逻辑是在,ReferenceBean
的父类ReferenceConfig.init()
中完成服务发现。
服务发现过程
服务发现过程中比较重要的是在ReferenceConfig.createProxy()
方法内,会获取注册中心对应的URL,并添加具体服务发现的参数,通过具体的protocol得到服务invoker,最后利用dubbo扩展机制获取ProxyFactory
的实现来创建服务代理。(如果注册中心有多个,会通过集群策略将多个invoker伪装成一个invoker)