之前在“velocity源码分析:velocity初始化”文章中粗略地介绍了velocity整体的初始化过程,包括各个系统的初始化,本文主要介绍配置文件初始化。
RuntimeInstance.java 代码:
private void initializeProperties() { /* * Always lay down the default properties first as * to provide a solid base. */ if (configuration.isInitialized() == false) { setDefaultProperties(); } if( overridingProperties != null) { configuration.combine(overridingProperties); } }
RuntimeInstance.initializeProperties()代码比较简单,先读取默认配置到configuration中,再根据通过外部初始化,如果通过外部初始化,用外部初始化文件替换原先的配置;如果是不同,就新增。
看几个代码调用点来了解一下和编码的调用关系:
Velocity初始化:
Velocity.init(propsFilename) -> RuntimeSingleton.init(propsFilename); -> new RuntimeInstance().init( configurationFile ); -> setProperties(new ExtendedProperties(configurationFile)); -> overridingProperties = p;
特点:
1.默认初始化
2.增量初始化
3.动态初始化
至此:RuntimeInstance中:
private ExtendedProperties configuration = new ExtendedProperties();初始化好了