启动探究
启动时会先获取环境变量"dubbo.container",没有则获取
环境变量"dubbo.properties.file",没有则获取-D参数,没有则最后默认以"dubbo.properties"为地址.
对比true是否和环境变量
"dubbo.shutdown.hook" 相同,如果相同 ? 不同,加载dubbo.spring.cofig的配置xml文件
如果没有配置,默认加载META-INF/spring/*.xml
然后加载配置文件的上下文
Invoker是一个可执行对象 , 有三种类型
- 本地执行的Invoker(服务端使用)
- 远程通信执行的Invoker(客户端使用)
- 多个类型2的Invoker聚合成的集群版Invoker(客户端使用)
RefrenceConfig.init()中内容拆成具体的步骤,如下
第一步:收集配置参数
第二歩:从注册中心获取服务地址,返回Invoker对象
大致内容就是:
将通过远程通信将Invocation信息传递给服务器端,服务器端接收到该Invocation信息后,找到对应的本地Invoker,然后通过反射执行相应的方法,将方法的返回值再通过远程通信将结果传递给客户端。
第三歩 : 使用ProxyFactory创建出Invoker的代理对象