1. 在上一篇文章分析了guzz初始化的大体流程,这里继续分析,主要分析在initFromMainConfig的方法中解析guzz.xml的过程
2. 首先在initFromMainConfig中找到下面的代码:
GuzzConfigFileBuilder builder = GuzzConfigFileBuilder.build(this, config, "UTF-8") ; if(log.isInfoEnabled()){ log.info("Loading guzz config file:" + config) ; }
这里出现了一个类GuzzConfigFileBuilder,这也是一个重要的类,后面也会使用到,这里只看build方法,传入了config(就是guzz.xml)文件,一路跟踪找到:
protected void setupMainConfigDocument(GuzzContext gf, Resource r, String encoding) throws DocumentException, IOException, SAXException{ rootDoc = loadFullConfigFile(r, encoding).getRootElement() ; this.mainConfigResource = r ; }
出现了loadFullConfigFile方法,返回了一个guzz.xml的document对象.
3. 跟踪进入到loadFullConfigFile方法中:使用了dom4j的SAXReader来解析的guzz.xml,
final Element root = document.getRootElement(); List list = document.selectNodes("//import");
获取到根节点,寻找import节点,把找的到import放入到list中,然后进入for循环
for(int i = 0 ; i < list.size() ; i++){ Element n = (Element ) list.get(i) ; String file = n.attribute("resource").getValue() ; //load included xml file. FileResource fr = new FileResource(resource, file) ; Document includedDoc = null ; try{ includedDoc = loadFullConfigFile(fr, encoding) ; }finally{ CloseUtil.close(fr) ; } List content = root.content() ; int indexOfPos = content.indexOf(n) ; content.remove(indexOfPos) ; //appends included docs Element ie = includedDoc.getRootElement() ; List ie_children = ie.content() ; for(int k = ie_children.size() - 1 ; k >=0 ; k--){ content.add(indexOfPos, ie_children.get(k)) ; } }
有出现了loadFullConfigFile方法,也就是递归的解析了使用import导入进来的文件,然后把文件加入到document后面,最好返回整个xml文档对象,保存到了rootDoc
4. 到此guzz完成guzz.xml文件的解析
相关推荐
通过分析和运行这个项目,我们可以深入理解Guzz的核心概念和使用方法。 首先,Guzz的设计目标是提供一种灵活、高效的解决方案,用于处理实时或批处理的数据流任务。它采用了面向任务编程模型,使得开发者可以专注于...
ORM通过元数据(例如XML或注解)将对象模型映射到数据库关系模型,使得程序可以直接操作对象,而无需关注底层数据库的细节。例如,Hibernate是一个流行的Java ORM框架,它可以自动将对象持久化到数据库中,或将...
在Java中,这些元数据可以通过XML文件或注解的方式进行配置。 2. 持久层设计:持久层设计的主要目的是将内存中的数据持久化到外部存储设备中,比如关系型数据库、文件系统或消息队列等。持久层的设计目标包括数据...
ORM技术通过XML或注解来定义这种映射关系,使得Java对象可以直接被持久化到数据库,或者数据库中的记录可以被转化为Java对象。Hibernate是一个流行的Java ORM框架,它提供了SessionFactory和Session两个核心概念。...
通常情况下,这种机制涉及元数据的定义,比如XML配置文件或注解,用来描述对象和数据库表之间的映射关系。当数据需要保存或从数据库中检索时,ORM工具会根据定义的映射关系自动生成相应的SQL语句,执行后返回对象。 ...
- **工作原理**:ORM通过元数据(如XML或注解)来描述对象和数据库之间的映射关系。当对象的状态发生改变时,ORM框架会负责更新数据库,反之亦然。 - **优点**:提高开发效率、降低代码复杂度、增强代码可维护性。 -...
它通过定义元数据来描述对象和数据库之间的映射关系,在Java中,这样的元数据可以是XML格式或者使用注解方式。ORM技术允许开发者以面向对象的方式来操作数据库,从而将对象数据自动持久化到数据库中,或者将数据库中...