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如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值