Spring執行流程

2021-09-11 20:20:37 字數 1463 閱讀 7536

首先解析 spring.xml 配置檔案,把其中解析為 beandefinition, 存入beanfactory

""

class="

" init-method="

" destroy-method="

" scope="

" lazy-init="

">

把 beandefinition 中的定義讀取到乙個map集合中管理起來了,但還沒有建立 bean 的單例物件

執行beanfactory的後處理器

接下來 由 beanfactory 建立每個類對應的單例物件, 利用了反射根據類名建立每個類的例項物件(構造,初始化方法)

執行 bean 的後處理器, 它其中有兩個方法,會在 bean 的初始化方法前後被呼叫

會把這些結果 存入 beanfactory 的 singletonobjects 這樣乙個map集合裡

userservice -> userservice物件

執行依賴注入

主要為了解決迴圈引用問題

class a

class b

key value

a new a();

b new b();

map.get(「a」).setb( map.get(「b」) );

map.get(「b」).seta( map.get(「a」) )

容器.getbean(「bean id」) 根據bean 的id,把bean id當做key,進入 singletonobjects 獲取值

返回的結果就是 userserivce物件

所有請求通過匹配 / 路徑 進入了 dispathcerservlet

handleradapter 用來真正執行,控制器中的方法

handlerexceptionresolver (異常解析器) 負責處理控制器方法中異常, @exceptionhandler

viewnametranslator 用來解析檢視名稱, 例如:會把方法的返回結果字串當成檢視名

viewresolver 視**析器,將檢視名解析為檢視物件(例如jsp檢視物件)

2) 進入 dispathcerservlet 後,會進入 dodispatch 方法,用來執行請求分發

執行鏈裡會依次呼叫 ***的 prehandle

進入 handleradapter, 由它來呼叫控制器,回到執行鏈

執行鏈裡會反序呼叫 ***的 posthandle

handleradapter 有個返回結果 modelandview, 再次回到 dodispatch

modelandview 再被視**析器解析,獲得乙個檢視物件 view

view 物件呼叫 render 方法,負責產生乙個響應結果

執行鏈裡會反序呼叫 ***的 aftercompletion

生成的響應結果,返回給瀏覽器

spring 啟動流程

啟動流程 prepare this context for refreshing.preparerefresh 1.initialize any placeholder property sources in the context environment 預處理配置,目前看到web層實現 預處理w...

Spring與Struts2整合 執行流程

spring與struts整合時,需要用到兩個jar包 spring web 4.2.4.release.jar struts2 spring plugin 2.3.24.jar 其中,在匯入spring web 4.2.4.release.jar後,需要在web.xml檔案中做如下配置 org.s...

Yii YII執行流程

yii整體執行流程直觀,具體由以下步驟 1 程式入口檔案index.php載入yii框架引導程式 bootstrap 檔案yii.php,載入配置檔案以及其他自定義配置。2 yii.php中yii類繼承了yiibase,主要封裝框架的一些通用方法,比如自動載入 建立元件 核心類路徑對映 記錄日誌以及...