velocity原始碼分析 velocity初始化

2021-08-26 01:18:39 字數 1647 閱讀 5717

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是否有值,去覆蓋預設配置

具體: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

velocity原始碼分析 velocity初始化

velocity初始化類結構圖 描述 1.runtimeconstants定義常量,主要是velociyt初始化的配置項的key 2.四個方法實現該介面主要是共用公共定義的常量,發現很多開源框架喜歡繼承公共常量定義的介面來公用變數。3.runtimeinstance類是velocity初始化的具體實...

velocity原始碼分析 初始化之指令初始化

之前在 velocity原始碼分析 velocity初始化 文章中粗略地介紹了velocity整體的初始化過程,包括各個系統的初始化,本文主要介紹指令相關初始化 由於指令是使用velocity語言必須掌握的內容,同時也是內部在建立node樹時特別區分的節點,是velocity 中比較核心的概念。原則...

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...