Ngbatis源码中DaoResourceLoader如何为?

摘要:Ngbatis 源码阅读之资源加载器 DaoResourceLoader DaoResourceLoader 是 Ngbatis 的资源文件加载器,扩展自 MapperResourceLoader。本篇文章主要分析这两个类。 1. 相关类
Ngbatis 源码阅读之资源加载器 DaoResourceLoader DaoResourceLoader 是 Ngbatis 的资源文件加载器,扩展自 MapperResourceLoader。本篇文章主要分析这两个类。 1. 相关类 MapperResourceLoader DaoResourceLoader 2. MapperResourceLoader 在介绍 DaoResourceLoader 之前有必要先介绍一下 MapperResourceLoader,DaoResourceLoader 是 MapperResourceLoader 的扩展。 MapperResourceLoader 继承了 PathMatchingResourcePatternResolver 类,关于 PathMatchingResourcePatternResolver 的有关内容,可以查看《Ngbatis源码学习之 Spring 资源管理 ResourceLoader》这篇文章。 2.1. load MapperResourceLoader 的作用是加载解析开发人员自定义的 XML 文件资源,核心是 load() 方法。具体方法如下: /** * 加载多个开发者自建的 XXXDao.xml 资源。 * * @return 所有 XXXDao 的全限定名 与 当前接口所对应 XXXDao.xml 解析后的全部信息 */ @TimeLog(name = "xml-load", explain = "mappers xml load completed : {} ms") public Map<String, ClassModel> load() { Map<String, ClassModel> resultClassModel = new HashMap<>(); try { // 加载 Resource 资源 Resource[] resources = getResources(parseConfig.getMapperLocations()); // 遍历资源并逐一解析 for (Resource resource : resources) { resultClassModel.putAll(parseClassModel(resource)); } } catch (IOException | NoSuchMethodException e) { throw new ResourceLoadException(e); } // 返回解析 xml 后的全部信息 return resultClassModel; } 可以看到在 load() 方法中首先调用 PathMatchingResourcePatternResolver 类的 getResources 方法加载指定文件夹位置下的所有 xml 文件,再对加载的 Resource 资源数组进行遍历,逐一对内容进行解析映射为模型类返回。 重点在 parseClassModel 方法。
阅读全文