手寫精簡版spring 框架後對ioc的體會
阿新 • • 發佈:2019-02-01
spring是如何初始化的?如何處理請求?
以前對於spring 都是停留在會用的層面,閒下來 參照資料 寫了一個精簡版的spring 理解了一下 其中的具體內容。
總結如下:(自己看著總結的,如果哪裡不對 請大家指出)
spring初始化
1. 拿到spring配置檔案,獲取掃描包名字(自動掃包註解)
2.遞迴掃描包下檔案,存入list
物件例項化
3.通過反射例項化 含有 service和Controller 註解的物件 存入map
物件注入
3.取出map中物件 中 所有注入的物件 通過 Field.set("需要注入的例項",“注入的例項”)
4初始化請求鏈,遍歷map 物件的所有方法 , 拼接url 存入 map(url,method)。
spring處理請求
5當請求到達前端控制器時:
5.1 解析uri 獲得專案名 replace 獲得 請求url
5.2 通過請求rul 在map中獲取對應的mehtod
5.3 通過Controller 名稱獲取Controller 物件
5.4 通過反射 執行 method.invoke(Controller , new Object[] { req, resp, null });
以上是對spring ioc的一點理解。