`

Digester 1.1 源码阅读

阅读更多

    前一段时间我们阅读了Digester的最初始的版本1.0版,现在我们再看一下1.1版,看看变化
来领悟作者的重构思路。
首先我们来看一下这个版本的更新:


1.  增加了一个Rules接口,原来是放到Digester里面的
用一个HashMap<String, ArrayList<Rule>>的来保存所有的Rule的,所有的add,removey以及
lookup操作都是在Digester里面进行的,现在把这个抽取出来,感觉非常合理,Digester只是
依赖于Rues,而相关的操作都是在Rules里面进行的;


2.  ObjectCreationFactory, AbstractObjectCreationFactory, FactoryCreateRule类,这个
其实也很好理解,主要是支持了通过传递一个ObjectCreationFactory,通过FactoryCreateRule来
创建一个Object,这样就可以使用用户的工厂来创建对象了。



3. 刚才我们谈到了,这个地方增加了一个新的接口Rules,它也增加了一个基本的实现RulesBase类,这个里面其实就是使用了一个HashMap<String, ArrayList<Rule>>的数据结构,不过它里面有一个cache,一个rules,在加入的时候时候cache和rules同时写的,然后
内部使用的是cache来实现增删改查,对外在调用getRules的时候,返回的时候rules。



4. 里面还增加了一个ExtendedBaseRules,不过在这个版本没有使用,
就是增加了更多的匹配的选项,支持通配符等,这个还没有仔细看,不过
应该变化不大。



5. 变化还有Digester,它也相应的做出了一些调整,最大的变化应该时候
增加了一个ArrayStack paramStack,这样在CallMethodRule和CallParamRule的
时候就不会再把参数压到盛放object的那个stack里面了。


6. 还有一个比较大的变化点就是增加了一个RuleSet和一个它的标准实现
RuleSetBase,它允许用户根据namespaceURI来定义一组rule,在Digester的
addRuleSet方法里面会调用RuleSet的addRuleInstances,实际上在它的实现
里面时候将一些rule增加到RulesBase里面。






  • 大小: 21.4 KB
分享到:
评论

相关推荐

    Digester学习

    《Digester学习详解》 Apache Digester 是一个用于解析XML文档并将其映射到Java对象的工具,尤其在处理配置文件或对象关系映射时,它能...在实际项目中,合理利用 Digester 可以有效地减少代码量,增强代码可维护性。

    tomcat6的源码

    这个源码包,"apache-tomcat-6.0.43-src",是Tomcat 6的官方源代码,非常适合开发者进行深入学习和自定义修改。以下是基于这个源码包的一些关键知识点: 1. **Servlet容器**:Tomcat作为Servlet容器,其主要任务是...

    apache-tomcat 源代码

    - 源代码中的`org.apache.catalina.util.ServerInfo.java`和`org.apache.tomcat.util.digester.Digester.java`类展示了如何解析和处理这些配置文件。 5. **网络通信**: - Coyote是Tomcat的网络连接器,负责处理...

    tomcat6.0.39源代码

    这个源代码包提供了Tomcat的核心功能和组件的源码,对于深入理解Tomcat的工作原理以及进行定制化开发具有重要的价值。 源代码的分析可以从以下几个方面展开: 1. **架构概述**:Tomcat采用模块化设计,主要包括...

    Extjs Tree + JSON + Struts2 示例源代码

    现在我自己做了一个所有源代码的包,供大家下载。 有几点事项请大家注意 1、blogjava的文件上载要求单个文件不能超过4M,所以,我把web-inf目录下的所有jar文件删除了。 所有jar文件的列表是: commons-beanutils-...

    org.apache.commons 常用jar 以及部分源码

    commons-digester-1.6.jar commons-dbcp-1.2.2.jar commons-collections-3.2.1.jar commons-codec-1.3.jar commons-chain-1.1.jar commons-beanutils-1.6.jar 包含两个最常用的源码: commons-beanutils-1.6-src....

    SSH基于Eclipse实现Web层的分页功能源代码

    教学-传智播客-项目视频经典之作巴巴运动网106集-27实现Web层的分页功能源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...

    实现Web层的分页功能源代码

    教学-传智播客-项目视频经典之作巴巴运动网106集-27实现Web层的分页功能源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...

    将Web层分页封装成通用模块源代码

    教学-传智播客-项目视频经典之作巴巴运动网106集-28将Web层分页封装成通用模块源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...

    apache commons jar(commons所有的jar包,从官网下载提供给大家)

    因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的会有一个bin和一个src源文件。 apache-sanselan-incubating-0.97-...

    struts安装

    - 解压缩下载的源代码到指定目录,例如 `d:\jakarta\struts-1.1-b1-src`。 - 解压缩支持库文件,并将所需的 JAR 文件添加到系统的类路径 (classpath) 中,以便 Ant 能够找到它们。 4. **配置与运行** - 设置 Ant...

    Struts实践入门(原创)

    - **jakarta-struts-1.1-b1-src.zip**:包含 Struts 的源代码。 - **jakarta-struts-1.1-b1-lib.zip**:包含 Struts 运行所需的库文件。 ##### 2.2 软件需求 为了能够顺利地使用 Struts 构建 Web 应用程序,还需要...

    Tomcat 10.0.12的源码

    `org.apache.tomcat.util.digester`包中的类用于解析XML配置文件,如`server.xml`和`context.xml`,生成相应的Java对象并初始化它们。 **8. 连接器与协议处理** Tomcat支持多种连接器,如基于NIO、NIO2和 APR的连接...

    Apache-Tomcat-9::nerd_face:Apache-Tomcat-9源代码-apache source code

    - `src`:源代码目录,包括各个模块的源码。 - `build.xml`:Ant构建文件,用于构建和测试Tomcat。 3. **核心组件分析**: - `org.apache.catalina`包下的类:Catalina组件的实现,如Engine、Host、Context、...

    JSF+Spring+Hibernate小例子

    commons-digester-1.8.jar commons-fileupload-1.0.jar commons-lang-2.3.jar commons-logging-1.1.jar commons-pool-1.2.jar dbunit-2.2.jar dom4j-1.6.1.jar ehcache-1.1.jar hibernate-3.1.3.jar jstl-1.2.jar ...

    datav.js

    不过,从标签“源码”和“工具”我们可以推测,datav.js是一个开放源代码的工具,可能用于创建交互式的数据图表或者数据驱动的界面。 在提供的压缩包文件名称列表中,我们看到的是一系列与Apache POI相关的库,这是...

    struts源码学习.pdf

    Struts 1.1是该系列中的一个版本。 #### 二、RequestProcessor类的作用与实现 ##### 1. **RequestProcessor类的角色** - **概述**:`RequestProcessor`类在Struts架构中扮演着核心角色之一,主要作为`Action...

    tomcat9.04

    源代码的提供使得开发者可以深入理解Tomcat的工作原理,进行定制化开发,或者对Tomcat进行性能优化、安全增强等。对于Java开发者来说,掌握Tomcat源码是提升技能的重要步骤,尤其是在进行服务器端应用的调试时。 在...

    DDT(数据驱动测试)

    6. **junitext-0.2.4.jar**:这可能是JUnit的一个扩展或辅助库,用于增强JUnit的功能,例如自定义报告、更复杂的断言或者与外部数据源的集成,从而更好地支持DDT的需求。 综合以上,DDT通过将测试用例数据与执行...

Global site tag (gtag.js) - Google Analytics