`
v5qqbrowser
  • 浏览: 356880 次
文章分类
社区版块
存档分类
最新评论

ibatis配置文件解析之XmlParserState

 
阅读更多

在ibatis配置文件解析总体流程一文中主要介绍了配置文件的大体过程,主要分为两个部分:一是注册xml节点解析算法,二是遍历配置文件,根据已注册的节点解析算法执行解析。

那么,配置文件中的各个节点是如何解析的呢?解析后得到的数据去向又是如何呢?应用程序又是如何使用这些配置信息呢?本文暂不对节点解析做详细的套路,也不讨论应用程序如何使用这些配置,主要关注配置信息的流向,即配置文件的解析类和配置信息的使用类是如何协调工作的。

在iBatis中,协调配置文件解析类和配置文件使用类的工作是由XmlParserState负责的,它接收由解析类解析得到的配置信息,然后再将这些信息创建成为相应的配置信息类转发给应用程序的配置信息使用类。下面就来看一下和XmlParserState有关联关系的类有哪些。

XmlParserState关系图

从上述的关系图中可以得知,XmlParserState是信息交流的枢纽,解析类将得到的数据发送给XmlParserState,然后XmlParserState再将其发送给配置类,配置类发送给应用类。

XmlParserState与Parser之间的关系:在整个应用中,只有一个XmlParserState对象,Parser持有这个对象引用,并将这个引用传递给Nodelet实例。Nodelet实例得到XmlParserState实例的引用后,在执行解析的时候,将解析结果放入到XmlparserState实例中。同时,也可能通过XmlParserState实例来取得Config实例的引用,将相关信息发送给Config类。个人觉得在Nodelet中直接操作Config对象这种做法有些不妥,应该通过XmlParserState来操作Config对象,这样更能体现XmlParserState的中介者的作用了,也消除了Parser与Config之间的耦合。

XmlParserState与Config类之间的关系:在XmlParserState类中,持有各个Config实例的引用,其中SqlMapConfiuration是由XmlParserState创建的,其他的Config是Parser通过SqlMapConfiguration创建的,然后将创建的对象赋值给XmlParserState。

通过上述的讲解,iBatis配置文件解析中,配置信息的传递情况已经很明确了,Parser与Config通过XmlParserState关联在一起,XmlParserState作为一个协调者的角色,辅助Parser和Config工作。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics