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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值