velocity源码分析:velocity初始化

来源:互联网 发布:隐藏图标的软件 编辑:程序博客网 时间:2024/06/15 20:45

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
        


原创粉丝点击