本节将对ConfigDataImporter进行分析,该对象主要负责配置数据导入,它的实现离不开ConfigDataLoader和ConfigDataLocationResolver,下面对ConfigDataImporter成员变量进行说明,详见表5-2。
表5-2 ConfigDataImporter成员变量
在ConfigDataImporter对象中主要关注resolveAndLoad方法,该方法可以理解为一个大方法,它提供了解析和加载两个操作,具体处理代码如下:
在上述代码中可以发现解析操作由resolve方法负责,加载操作由load方法负责,当出现异常时会抛出异常。下面对解析方法resolve进行分析,具体处理代码如下:
在解析方法中会将参数locations进行遍历,对其中的每个元素进行一次处理,处理方式是通过成员变量resolvers进行。在成员变量resolvers处理过程中实际操作的是ConfigDataLocationResolver。最后对数据加载操作方法load进行分析,具体处理代码如下:
在load方法中主要的处理流程如下。
(1)创建结果集合。
(2)循环处理方法参数candidates,单个元素的处理细节如下:
①获取资源地址;
②获取资源对象;
③判断资源对象是否是可选的,如果是将其加入optionalLocations集合中;
④判断资源是否在loaded中已经存在,如果存在将其加入到loadedLocations集合中;
⑤如果资源在loaded中不存在会通过loaders将数据进行加载,加载后会放入loaded、loadedLocations和结果集合中。