Spring啟動流程(一)——準備重新整理

努力的小強發表於2020-10-29

在這裡插入圖片描述

protected void prepareRefresh() {
    // 設定啟動時間。當前毫秒數代表當前applicationContext的建立時間
    this.startupDate = System.currentTimeMillis();
    // 設定容器關閉標誌
    this.closed.set(false);
    // 設定啟動標誌
    this.active.set(true);

    if (logger.isInfoEnabled()) {
        logger.info("Refreshing " + this);
    }

    // 初始化屬性資源
    initPropertySources();

    // 驗證所有的屬性是否都是可解析的
    getEnvironment().validateRequiredProperties();

    // ApplicationEvent初始化
    this.earlyApplicationEvents = new LinkedHashSet<ApplicationEvent>();
}

以配置檔案方式為例。當宣告ClassPathXmlApplicationContext時呼叫其構造方法,構造方法中呼叫AbstractApplicationContext的refresh()方法。refresh()方法中,第一步呼叫prepareRefresh()方法(準備重新整理)。接著呼叫initPropertySources()方法初始化屬性資源(由其子類來實現)。然後呼叫getEnvironment().validateRequiredProperties()方法驗證所有的屬性是否都是可解析的,最後完成ApplicationEvent初始化。

相關文章