velocity源码分析:初始化之指令初始化
之前在“velocity源码分析:velocity初始化”文章中粗略地介绍了velocity整体的初始化过程,包括各个系统的初始化,本文主要介绍指令相关初始化代码,由于指令是使用velocity语言必须掌握的内容,同时也是内部在建立node树时特别区分的节点,是velocity代码中比较核心的概念。
原则,现上图:
说明:
velocity指令初始化代码比较简单,在初始化好resourceManger后,调用initDirectives()方法初始化指令,
具体逻辑:
1.读取velocity.properties配置文件,并加载所有的指令配置
2.利用反射加载初始化所有的指令
3.将指令放到runtimeDirectives中,同时把所有初始化的指令放到runtimeDirectiveShared中,这样主要是以后调用会使用到shared
但是由于指令系统和node解析直接相关,本文主要介绍指令系统的代码结构,以方便代码后续对node节点树构建的方式作铺垫;同时也让velocity的使用者而不是开发者理解各个指令的实现和使用。
概述:
velocity中有两个重要的配置文件,一个是velocity.properties,主要用来定义velocity初始化时需要用到的配置信息;另一个就是本文介绍的directive.properties,该文件中定义了velocity中的一些指令系统,如判断指令,循环指令。
指令:
1.foreach
2.include
3.parse
4.macro
5.evaluate
6.break
7.define
8.stop