加载配置
如下图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
设计点:
- 通过rpc.config.order进行CfgFile的排序,为什么这么设计,因为CFG是个map,存在value被覆盖的情况,所以通过rpc.config.order来灵活控制.
- 如图3的OrderedComparator,并没有写死按order从大到小还是小到大的顺序来排序,而是可控的

图3
Listener
全局配置的变更会触发Listener调用,如图4/图5所示,修改全局配置会触发Listener
这是个拓展点,Spring就是通过event/listener来做很多事情的

图4

图5


