如下图1所示,init静态方法,首先加载sofa-rpc自带的json配置文件,将结果转换为map放到全局配置CFG中,之后加载sofa-rpc/rpc-config.json文件的内容,之后加载META-INF/sofa-rpc/rpc-config.json配置文件,最后加载System.getProperties()。
所以如果我们想重写默认的配置,可以自定义json文件,另外可以设置System.setProperties来覆盖。
图1
来看下loadCustom内容,获取所有对应的json文件,之后逐行读取文件的内容,转换为Map,之后再封装为CfgFile,这就完了?不,CfgFile先放到Collection之后,之后再通过rpc_cfg_order进行排序,排完序逐个放入CFG中
图2
设计点:
图3
全局配置的变更会触发Listener调用,如图4/图5所示,修改全局配置会触发Listener
这是个拓展点,Spring就是通过event/listener来做很多事情的
图4
图5