1.方法代码如下:
/**
* 准备工作
*/
protected void prepareRefresh() {
//记录初始化开始时间
this.startupDate = System.currentTimeMillis();
this.closed.set(false); //context是否关闭的标志,设置为false
this.active.set(true); //context是否激活的标志,设置为true
if (logger.isDebugEnabled()) { //记录日志
if (logger.isTraceEnabled()) {
logger.trace("Refreshing " + this);
}
else {
logger.debug("Refreshing " + getDisplayName());
}
}
//留给子类实现的空方法
initPropertySources();
/** AbstractPropertyResolver类的requiredProperties是个集合,
* 在下面的validateRequiredProperties方法中,都要拿requiredProperties中的元素作为key去检查是否存在对应的环境变量,
* 如果不存在就抛出异常
*/
getEnvironment().validateRequiredProperties();
// 初始化earlyApplicationListeners容器 --LinkedHashSet
if (this.earlyApplicationListeners == null) {
this.earlyApplicationListeners = new LinkedHashSet<>(this.applicationListeners);
}