`
kuwoleft
  • 浏览: 1076883 次
文章分类
社区版块
存档分类
最新评论

velocity源码分析:初始化之ResourceManager

 
阅读更多

之前在“velocity源码分析:velocity初始化”文章中粗略地介绍了velocity整体的初始化过程,包括各个系统的初始化,本文主要介绍Resource相关初始化,本文内容涉及到的概念比较多,也是velocity中比较重要的一部分初始化内容,期间设计到代码使用的template等概念。

还是先以一张类图开始,如图1:


(图1)


ResourceManager在初始化时主要加载了velocity.properites中资源相关的配置,初始化RuntimeInstance中的ResourceManager属性,以下罗列几个加载配置:


一块是反射方式初始化 resource manager,一块初始化具体的resourceLoader,本例子中简单修改file.resource.loader.path,添加另一个模板加载位置,把模板在“当前目录”或者/home/madding/vm下,都能被加载到。


说明:

1.ResourceManager的初始化直接关联到的对象是resource对象的创建,经常使用的是template对象的创建,调用的就是ResourceManager的resourceLoader对象进行传教的

2.ResourceManager在初始化resourceLoader根据具体的配置加载,可以初始化多个配置,存在List中,在间接生成Resource对象后,循环调用加载器加载具体的模板。

3.resourceLoader有几个实现方式,一般web工程中使用fileResourceLoader,即根据具体路径加载vm文件。

4.ResourceCache是控制资源加载的缓存设置,根据velocity.properties文件内容加载配置,主要是减少每次加载,缓存实现采用的是LinkedHashMap和ConcurrentHashMap实现。

5.ResourceFactory是构建资源对象的工厂类,该类接口设计不是很合理,不过不影响功能,主要是代码构建Resource对象,每次new出一个Resource对象。在实际调用中,该对象加载后会存在ResourceCache中,之所以要保存这个信息,主要是因为Resource对象在解析时会消耗大量计算(因为要构建ast树,tree),所以保存起来,空间换时间。



至此:RuntimeInstance中

属性初始化了。









分享到:
评论

相关推荐

    Velocity初始化过程解析

    Velocity初始化过程解析Velocity初始化过程解析Velocity初始化过程解析

    velocity-1.7-API文档-中文版.zip

    赠送jar包:velocity-1.7.jar; 赠送原API文档:velocity-1.7-javadoc.jar; 赠送源代码:velocity-1.7-sources.jar; 包含翻译后的API文档:velocity-1.7-javadoc-API文档-中文(简体)版.zip 对应Maven信息:...

    velocity-tools-2.0.jar

    velocity-tools-2.0.jar velocity-tools-2.0.jar velocity-tools-2.0.jar velocity-tools-2.0.jar velocity-tools-2.0.jar

    velocity-1.7-API文档-中英对照版.zip

    赠送jar包:velocity-1.7.jar 赠送原API文档:velocity-1.7-javadoc.jar 赠送源代码:velocity-1.7-sources.jar 包含翻译后的API文档:velocity-1.7-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:...

    Velocity 源码例子

    Velocity 源码例子

    velocity-tools-generic-3.1-API文档-中英对照版.zip

    赠送jar包:velocity-tools-generic-3.1.jar; 赠送原API文档:velocity-tools-generic-3.1-javadoc.jar; 赠送源代码:velocity-tools-generic-3.1-sources.jar; 赠送Maven依赖信息文件:velocity-tools-generic-...

    velocity-engine-core-2.3-API文档-中文版.zip

    赠送jar包:velocity-engine-core-2.3.jar 赠送原API文档:velocity-engine-core-2.3-javadoc.jar 赠送源代码:velocity-engine-core-2.3-sources.jar 包含翻译后的API文档:velocity-engine-core-2.3-javadoc-...

    velocity-tinytest:使用 Tinytest 和 Velocity

    numtel:速度-微小的测试使用 Tinytest 测试您的 Meteor 应用程序,就像您测试包一样。... 要查看结果,请安装 Velocity HTML Reporter: $ meteor add velocity:html-reporterTinytest 文档由于 Tinytest 没有官

    velocity-tools-1.4.jar

    velocity-tools-1.4.jar

    velocity.js:js 动作插件

    velocity.js$element.velocity({width: "500px", property2: value2}, {/* Velocity's default options */duration: 400,easing: "swing",queue: "",begin: undefined,progress: undefined,complete: undefined,...

    velocity-site:Apache Velocity网站

    Apache Velocity项目Apache Velocity网站介绍当您访问 (我们的主页)时,将获得Apache Velocity网站。 它是所有Apache Velocity子项目的信封站点。 简而言之:仅当您感兴趣时,此Git存储库才对您很有趣a)想要在...

    velocity-tools-view-1.1.jar

    velocity-tools-view-1.1.jar

    velocity-shim:Velocity + debugOnly 中弱依赖问题的解决方法

    速度垫片这个包是 git remote 通过在 Velocity 中设置debugOnly: true创建的。 当这个包被框架添加时,Velocity 包对象暴露在全局对象上。

    velocity-tools-view-2.0-beta1.jar

    velocity-tools-view-2.0-beta1.jar, 供大家使用

    JAVA velocity模板引擎使用实例

    velocity使用1.7版本。 在win7下使用intelliJ IDEA建立一基于tomcat的web app项目,命名为todo_web,设置path为/todo,导入velocity相关jar包。只导入velocity-1.7.jar这个包可能会报错,根据提示再导入velocity自带...

    velocity-validator:用于验证Apache Velocity模板的Java工具

    简单的验证工具,用于检测Apache Velocity模板中的错误。 它遍历目录并验证每个.vm文件。 错误会显示文件名,错误和可能的解决方案。 用法 java -jar velocityvalidator.jar path_to_templates [-rules=path_to_...

    velocity-engine-core-2.3-API文档-中英对照版.zip

    Maven坐标:org.apache.velocity:velocity-engine-core:2.3; 标签:core、apache、engine、velocity、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...

    velocity-1.7-sources.zip

    Velocity 是 Apache 基金会的项目,开发的目标是分离 MVC 模式中的持久化层和业务层。但是在实际应用过程中,Velocity 不仅仅被用在了 MVC 的架构中,还可以被用在以下一些场景中。 1.Web 应用:开发者在不使用 JSP ...

    java-velocity-snippets:Sublime Text 23 的 Java Velocity 片段

    用于 Sublime 文本的 Java Velocity 片段瓦尔斯[设置] 设置变量描述:设置变量的方法回程:虚空#set($${ 1 : var } = ${ 2 : " " })[var] 使用 var 描述:写变量的方法$ ! {${ 2 : var }}大批[aa] array.add 描述:...

Global site tag (gtag.js) - Google Analytics