Spring原始碼解讀 1 啟動流程的那點事兒

2021-08-19 18:12:48 字數 1905 閱讀 4186

在一般的web應用程式,我們倘若用到spring的話,需要在web.xml中配置以下的資訊來使一些容器,例如

tomcat

、jetty

等來載入spring。

以下是web.xml的部分**配置

<

context-param

>

<

param-name

>

contextconfiglocation

param-name

>

<

param-value

>

classpath:config/spring-*.xml

param-value

>

context-param

>

<

listener

>

<

listener-class

>

org.springframework.web.context.contextloaderlistener

listener-class

>

listener

>

而spring

主要通過

contextloaderlistener

類在應用啟動時載入其服務,通過原始碼可知,contextloaderlistener實現了

servletcontextlistener類,重寫了contextinitialized方法

現在讓我們著重看一下這個

這個方法到底做了什麼事呢。

這個方法的實現在

org.springframework.web.context.contextloader

下我們只擷取部分重要**

細心的同學會發現,上面我們已經說過了,這個方法的實現在org.springframework.web.context.contextloader下,讓我們回到contextloader類看看,到底有什麼玄機。

static 

catch (ioexception ex)

}

沒錯,非常有意思是contextloader類裡面有乙個靜態**塊,在類啟動載入的時候就已經去讀取org\springframework\web\context\contextloader.properties這個配置檔案並進行載入了。

中的refresh方法,在該方法裡,會完成載入資源、配置檔案(包括配置檔案中的自定義標籤)解析、bean定義註冊、元件初始化。

在看refresh方法之前,我們先看一下customizecontext(sc, wac)這個方法。refresh方法放到下一章講解。

配置和示例如下:

在web.xml中加入一下配置
globalinitializerclasses

com.deepbaytech.service.impl.initializer1

system.err.println("initializer1初始化完成");}}

關於spring原始碼解讀

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...

Spring 原始碼解讀 推薦流程

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...

Spring 原始碼解讀 推薦流程

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...