`
wobfei
  • 浏览: 147040 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Velocity学习小结

阅读更多

大概了解了下velocity的东西,把过程中自己不理解以及自己的一些总结写成文档。可能有些部分不对,或者部分我不理解的地方,还请发现者指正,非常感谢。我邮箱  minedfy@163.com

      

velocity中不理解的几个地方

1、  模式使用上有点乱,不过不影响代码层次。(个人理解)

2、  资源文件加载的时候,ResourceLoader 是所有的ResourceLoader都尝试一遍,如果抛异常则进行下一个加载,如果正确返回则直接返回。这样的设计感觉不是很合理。当然默认只加载FileRourceLoader的情况下是可以进行,但如果加载多个Loader,会不会开销有点大呢??

3、  Introspector中的cache无大小限制??

4、  为何在RuntimeInstance中定义Introspetor,又使用uberspectIntrospector。不是很明白RuntimeInstance中定义的intropsetor是做什么的,实际应用使用uberspect中的是不是就足够了呢??

5、  SimplePool(parsePool)put方法,相当于需要业务控制poolput的大小,那这个其实可以自己控制。

6、  主要的核心对象都有对RuntimeService的引用,如果直接使用Velocity访问是不是更好呢???

7、  Parser这块的代码好难看懂。只是明白分解的目的和结果,但代码没能看懂。

 

Velocity要学习的地方

1、  单例的控制,使用RuntimeSingleton控制,可以很好地节约new对象等额外的开销。

2、  配置信息统一集中管理,全局通用,可以很好的管理、扩展。

3、  使用了缓存,例如parsepool默认缓存大小20ResourceCache默认大小89.可以提高效率。在做自己业务的时候,多考虑缓存的使用。

4、  使用了不少设计模式,整体来说对实现、代码层次帮助很大。

 

需要主要的地方

       1、只可以初始化一次

 

扩展自己定义velocity配置

       Velocity的扩展通过是配置属性,所以需要实现扩展信息并添加到配置中即可。

1、  自定义Director

继承velocityDirective超类,然后将实现类的路径添加到userdirective。使用“,”分割多个自定义director。如:

Velocity.addProperty("userdirective","com.wobfei.velocity.WobfeiDirective");

 

2、  自定义EventHandler

eventHandler主要由ReferenceInsertionEventHandlerReferenceInsertionEventHandlerMethodExceptionEventHandlerIncludeEventHandlerInvalidReferenceEventHandler组成,对应不同的event。实现自己需要定义的接口,并将其路径添加到相应的配置信息下,变量名为:eventhandler.referenceinsertion.class

eventhandler.nullset.class

eventhandler.methodexception.class

eventhandler.include.class

 

3、  自定义增加resourceLoader

默认只加载FileResourceLoader,如果需要加载其它resourceLoader,则增加配置(这里以增加JarResourceLoader为例)

        Velocity.addProperty("resource.loader", "jar,file");

        Velocity.addProperty("jar.resource.loader.description",

                                        "Velocity Jar Resource Loader");

        Velocity.addProperty("jar.resource.loader.class",

"org.apache.velocity.runtime.resource.loader.JarResourceLoader");

       Velocity.addProperty("jar.resource.loader.path",

                                       "jar:file:D:/work/lib/ij.jar!/");

Velocity.addProperty("jar.resource.loader.cache", "false");     Velocity.addProperty("jar.resource.loader.modificationCheckInterval", "2");

4、  修改其它配置。

velocity默认的配置可查看org.apache.velocity.runtime.defaults.velocity.properites文件,如果要替换默认配置,只需要使用Velocity.addProperty方法替换即可。必须是在初始化方法之前,否则不会生效,Velocity默认只能加载一次。

 

核心类图

1、  核心类图-整体

   

2、  resourceManager类图如下

 

 

3、velocimacroFacatory如下

 

4、uberspect、introspector如下

  • 大小: 34.1 KB
  • 大小: 24.5 KB
  • 大小: 8.7 KB
  • 大小: 22.3 KB
0
4
分享到:
评论

相关推荐

    velocity总结

    本文档详细的解析了velocity的语法及其运行机制,通过学习本文档,可以快速全面的了解velocity,并且使用velocity开发项目

    adams函数学习总结

    网上看到的关于adams的函数总结,不错的

    大数据学习总结.doc

    《大数据时代》读后感 学习总结 关于作者 维克托·迈尔-舍恩伯格(Viktor Mayer- Schönberger),他是十余年潜心研究数据科学的技术权威,他是最早洞见大数据时代发 展趋势的数据科学家之一。 关于大数据 大数据是...

    spring in action英文版

    第一部分 Spring基础  第1章 开始Spring之旅  1.1 为什么使用Spring  1.1.1 J2EE开发者的一天  1.1.2 Spring的承诺  1.2 Spring是什么 ... 1.7 小结 ... 2.5 小结 ... 3.7 小结 ... 11.6 小结

    仿照今日头条的主页实现的java web项目

    使用SpringBoot+Mybatis+velocity开发。开发工具和Java语言介绍 内容包括: 开发工具和Java语言 Spring入门,模板语法和渲染 数据库交互iBatis集成 用户注册登录管理 资讯发布,图片上传,资讯首页 评论中心,站内...

    大数据培训心得.docx

    学习总结 大数据培训心得全文共1页,当前为第1页。 大数据培训心得全文共1页,当前为第1页。 大数据的定义 也叫巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理的时间内达到采集、管理 ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    1.4 小结 13 第2章 初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 ...

    springboot学习

    Spring Boot Actuator监控端点小结 在传统Spring应用中使用spring-boot-actuator模块提供监控端点 Spring Boot应用的后台运行配置 Spring Boot自定义Banner Dubbo进行服务治理 chapter9-2-1:Spring Boot中使用Dubbo...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 ...15.7 小结 332

    Maven权威指南 很精典的学习教程,比ANT更好用

    小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1. Yahoo! Weather RSS 4.3. 创建Simple Weather项目 4.4. 定制项目信息 4.5. 添加新的依赖 4.6. ...

    struts2 action 配置方法 &&struts2的配置文件

    struts2 action几乎完全吸收了xwork 的精华,近日学习struts 2,总结一下action的配制方法。struts2相关的配置文件有web.xml(必须的),struts.xml(必须的),struts.properties,struts-default.xml,velocity.properties...

    一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是两眼一抹黑,所以今天松哥想和大家聊一下前后端分离以及 Vue.js 的一点事,算是一个简单的入门科普吧。 前后端不分 后端模板:Jsp、FreeMarker、...

    电子商城系统设计实习报告.doc

    16 7.2 逻辑结构 18 7.2.1 数据表结构详细设计 18 7.2.2 数据库表之间的关系设计 19 8 程序效果展示 20 8.1 前台功能模块 20 8.2 后台功能模块 22 9 实习总结体会 27 实习内容简述 1 实习期间完成的学习内容: 1 ...

    高中生对于大数据发展的思考——我眼中的大数据.docx

    2、不是精确性,而是混杂性 在庞大的数据体量面前,每一个小的数据的精确性可以变得不是那么的重要,因为庞大的数量可以消除或极大地稀释那些不准确的部分。看上去混杂无章的数据,可以将原来看似无关的维度联系...

    大数据全样而非抽样原理-一文带你了解什么是大数据.pdf

    第⼆个,Velocity,即⾼速,速率快,⼤数据产⽣的速度是很快的,有个知名的说法,即⼤ 数摩尔定律,据测算,现在每两年数据就会翻⼀倍,这个增长量是及其可怕的。第三个,Variety多样性,之前产⽣的数据多半是结构化...

    大数据基础知识入门.pdf

    大数据的特性 大量(Volume) 多样(Variety) 快速(Velocity) 价值(Value) 大数据技术的由来 自 2002 年 数 字 时 代 开 启 以 来,数据呈现海量增长趋势(如图 所示)。特别是在2004年社交媒体 产生后,数据更...

    人工智能与大数据银行.pptx

    人工智能的简述 02 人工智能发展第三次热潮主要源于三个重要因素:计算能力、深度学习算法和大数据的发展; 03 人工智能未来最可能替代掉的是重复性高、规则相对标准化的工作机会,比如客户服务人员、电话销售人员...

Global site tag (gtag.js) - Google Analytics