javascript
SpringIoC和SpringMVC的快速入门
Spring的優勢?
為什么本文不講AOP?
IoC和AOP是Spring框架的兩大特性,IoC和MVC的流程密不可分,可以看作是面向對象編程的實現;而AOP特性則是面向切面編程的體現,也是前者的補充,所以可以拆分開后續講解。
本文對SpringIoC和SpringMVC的流程進行了簡單的講解,更加詳細的過程,歡迎看筆者的代碼庫,里面幾乎每行代碼都做了詳細注釋,一個請求debug跟下來,過程就一目了然了。
快戳我,我們去學習~
什么是SpringIoC?
控制反轉IoC(Inversion of Control),是一種設計思想。沒有IoC的程序中我們使用面向對象編程對象的創建與對象間的依賴關系完全硬編碼在程序中,對象的創建由程序自己控制,而使用控制反轉后,將對象的創建轉移給第三方。
IoC是Spring框架的核心內容,使用多種方式完美的實現了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置實現IoC。Spring容器在初始化時先讀取配置文件,根據配置文件或元數據創建與組織對象存入容器中,程序使用時再從Ioc容器中取出需要的對象。
采用XML方式配置Bean的時候,Bean的定義信息是和實現分離的,而采用注解的方式可以把兩者合為一體,Bean的定義信息直接以注解的形式定義在實現類中,從而達到了零配置的目的。
SpringIoC的過程?
基礎包掃描。讀取配置文件,然后根據配置路徑進行全包掃描,,最后將掃描到的類名加上全限定名之后加入到數組集合中
實例化所有帶注解的類。遍歷上一步的數組集合,判斷類上的注解并實例化該類,以該類的類名為key,實例為value,放入哈希表中
依賴注入。遍歷上一步的哈希表,獲取類上所有Fields,遍歷Fields,判斷Fields上是否為@Autowired類型的注解,如果是的話就把Map中的實例賦值這個field
Url地址和方法映射。遍歷第二步的哈希表,如果是Controller實例,獲取Methods并遍歷,判斷方法上是否含有@RequestMapping注解,如果含有,則獲取它的值,將@Controller的注解值拼接上@RequestMapping值組成key,當前method作為value,裝入hanlerMap中
請求反射調用。(這一步已經屬于MVC范疇)一個url請求過來,獲取它的地址,拆分,獲取Controller實例,獲取Method實例,反射執行Method
什么是SpringMVC?
SpringMVC框架是以請求為驅動,圍繞Servlet設計,將請求發給控制器,然后通過模型對象,分派器來展示請求結果視圖。其中核心類是DispatcherServlet,它是一個Servlet,頂層是實現的Servlet接口。
為什么要用SpringMVC?
框架的作用一直都是用來簡化編程的:
servlet只有doGet和doPost,一個servlet類只能處理一個url-pattern。
SpringMVC類里面可以通過RequestMapping處理很多請求,并且支持Rest風格的請求,如DELETE/PUT等;SpringMVC參數的映射可以直接封裝成實體類。
SpringMVC的流程
流程圖說明:
MVC流程中的模塊:
用戶請求到達前端控制器,它相當于MVC模式中的C(Controller),DispatcherServlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,DispatcherServlet的存在降低了組件之間的耦合性。
作用:作為接受請求,相應結果,相當于轉發器,中央處理器,減少其他組件之間的耦合度。
HandlerMapping負責根據用戶請求找到Handler(即:處理器),SpringMVC提供了不同的映射器實現實現不同的映射方式,例如:配置文件方式、實現接口方式、注解方式等。
作用:根據請求的Url 查找Handler
Handler是繼DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下,Handler對具體的用戶請求進行處理。
由于Handler設計到具體的用戶業務請求,所以一般情況需要程序員根據業務需求開發Handler。
通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。
作用:按照特定的規則(HandlerAdapter要求的規則)去執行Handler
ViewResolver負責將處理結果生成View視圖,ViewResolver首先根據邏輯視圖名解析成物理視圖名,即具體的頁面地址,再生成View視圖對象,最后對View進行渲染將處理結果通過頁面的展示給用戶。SpringMVC框架提供了很多View視圖類型,包括:JSTLView、freemarkerView、pdfView等等。
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)。
View是一個接口,實現類支持不同的View類型(jsp、freemarker等)一般情況下需要通過頁面標簽或者頁面模板技術將模型數據通過頁面展示給用戶,需要由程序員根據業務需求開發具體的頁面。
總結
以上是生活随笔為你收集整理的SpringIoC和SpringMVC的快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 某宝sign手稿记录
- 下一篇: 卸载ACE动态库导致句柄泄漏问题