velocity源码分析:velocity初始化

velocity初始化类结构图:

velocity源码分析:velocity初始化



描述:

1.RuntimeConstants定义常量,主要是velociyt初始化的配置项的key

2.四个方法实现该接口主要是共用公共定义的常量,发现很多开源框架喜欢继承公共常量定义的接口来公用变量。

3.RuntimeInstance类是velocity初始化的具体实现,里面定义了初始的顺序和步骤,具体接下来分析

4.RuntimeSingleton是RuntimeInstance的包装类,做了当例和适配

5.velcoity类又是RuntimeInstance的适配器

6.VelocityEngine是组合了RuntimeInstance,在初始化时调用RuntimeInstance.init(),可以多例

7.velocity解析器要当例或者多例取决于应用场景,不过大部分应用场景会采用多例,即调用VelocityEngine作框架融合

8.先初始化默认配置项,再去根据overridingProperties是否有值,去覆盖默认配置


具体:

RuntimeServices:读取配置

org.apache.velocity.app.Velocity初始化细节分析:
init():

initializeProperties():读取velcoity自带的velocity.properties配置文件
org/apache/velocity/runtime/defaults/velocity.properties

initializeLog(): 初始化velocity日志系统,
配置项:runtime.log.logsystem.class
加载配置文件中的定义的

initializeResourceManager(): 初始化velocity的资源管理器,
配置项:resource.manager.class
初始化选项定义的资源加载类,
默认初始化两个resourceLoader:FileResourceLoader、StringResourceLoader
配置项:resource.manager.cache.class
初始化选项定义的资源缓存类,控制全局资源缓存

initializeDirectives():加载velocity指令配置,
org/apache/velocity/runtime/defaults/directive.properties

initializeEventHandlers():加载事件处理类,
配置项:eventhandler.referenceinsertion.class
配置项:eventhandler.nullset.class 空值设置处理
配置项:eventhandler.methodexception.class 异常处理
配置项:eventhandler.include.class
配置项:eventhandler.invalidreferences.class

initializeParserPool():加载解析池
配置项:parser.pool.class

initializeIntrospection():
配置项:runtime.introspector.uberspect

initializeEvaluateScopeSettings():

vmFactory.initVelocimacro():初始化宏工厂
配置项:velocimacro.library