欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

velocity源代码分析

程序员文章站 2022-06-21 10:46:59
...

Velocity就是一个template引擎,或是代码生成器。
由template,engine,context组成。
1. 首先创建一个template(如果是用在web上就是一个html文件),将需要参数化或实例化的地方用跟context有关的符号标记出来,标记时使用velocity template language。而template应该可以是任意的文本。
2. 给context设定一些值,这些值用来替换在template中被标记的地方。
3. 利用engine将template中需要替换的地方用context中的值替换掉,也就是所谓的merge,从而得到该模板的实例。
除此之外,还有些组件:
logging:用log4j作为其日志系统。
Resource loader:控制网页生成中使用的模板。

VelocityEngine--->RuntimeInstance
                   initializeResourceManager()  
                                ----------->ResourceManagerImpl
                                            initialize()
                                            assembleResourceLoaderInitializers()
                   getTemplate()
                               ----------->getResource()------->loadResource()
 									     ----->Resource:Template
										      resource.process()
										      			------>ResourceLoader
                                                                                                                          getResourceStream()
										      			------>RuntimeInstance
                                                                                                                          parse()



parse阶段

RuntimeInstance
       prase()-------->ParserPool
			get()---------->Parser
                                        parse()

ResourceManager
Velocity.setProperty("resource.manager.class", "ResourceManager");

ResourceLoader
默认是FileResourceLoader

ResourceCache
默认是ResourceCacheImpl

RuntimeConstants总控配置

resourceType

velocity有两种资源类型 RESOURCE_TEMPLATE, RESOURCE_CONTENT,