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...