1. 程式人生 > >Spring與SpringMVC的區別 & IOC與DI的區別

Spring與SpringMVC的區別 & IOC與DI的區別

1.Spring的介紹

  • spring是一個一站式的框架,提供了表現層(SpringMVC)到業務層(Spring)再到資料層(SpringData)的全套解決方案;Spring的兩大核心是IOC與AOP,IOC(控制反轉)與AOP(面向切面程式設計)為程式解耦和程式碼的簡潔提供了支援。
  • 目的:簡化Java開發

  • 功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能

  • 範圍:所有java應用

  • Spring是個輕量級的控制反轉和麵向切面的容器框架,IOC與AOP可以單獨用於任何應用,包括與struts等mvc框架與hibernate等orm框架的整合。

2.SpringMVC的介紹

  • SpringMVC給Spring的表現層提供支援

  • SpringMVC的流程:(轉自他人部落格)

    1. 使用者傳送請求至前端控制器DispatcherServlet;

    2. DispatcherServlet收到請求呼叫HandlerMapping處理器對映器;

    3. 處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給DispatcherServlet;

    4. DispatcherServlet通過HandlerAdapter處理器介面卡呼叫處理器,執行處理器(Controller,也叫後端控制器);

    5. Controller執行完成返回ModelAndView,並返回給HandlerAdapter,HandlerAdapter將結果返回給DispatcherServlet;

    6. DispatcherServlet將ModelAndView傳給ViewReslover檢視解析器,ViewReslover解析後返回具體View給DispatcherServlet;

    7. DispatcherServlet對View進行渲染檢視(即將模型資料填充至檢視中)後返回給給客戶

  • SpringMVC就是一個MVC模式的web開發框架,都屬於Spring,SpringMVC需要有Spring的jar包作為支撐才能跑起來

3.AOP與IOC

  • AOP與IOC給Spring的業務層提供支援,使程式鬆耦合,程式碼簡潔
  • AOP原理:即面向切面程式設計,就是提取公共部分,集中解決一些公共問題
  • IOC原理:控制反轉,在傳統過程中,當某一個物件依賴於另一個物件時,會由該物件去建立另外一個物件。但是有了IOC之後,將建立過程交給IOC,由spring建立Bean,從而只需給該物件注入即可。

4.IOC與DI的區別與聯絡

(1)IOC:控制反轉

  • 傳統資源查詢方式:要求元件向容器發起請求,查詢資源作為迴應,容器適時返回資源。
  • IOC查詢方式:容器主動將資源提供給它所管理的元件,元件只需要選擇一個合適的方式來接收資源。
  • 建立物件例項的控制權由程式碼控制轉移到IOC容器控制(new關鍵字轉移到容器),即在XML檔案中控制,控制權轉移即所謂的反轉,側重於原理。

(2)DI:依賴注入

  • IOC另一種表達方式:元件以一些預先定義好的方式(如setter\getter)接收來自容器的資源注入。
  • 相對於IOC,DI更直接
  • 建立物件例項時,為這個物件注入屬性值和其他物件例項,側重於實現。

​​​​​​​(3)屬性注入

  • set方法注入bean的屬性值或依賴的物件

  • name屬性:制定bean屬性set方法後的屬性名

  • value屬性:可以使(value)子節點指定屬性值

(4)構造器注入

  • 通過構造器注入bean屬性值或依賴物件,它保證bean例項在例項化後可以使用 。

(5)區別

  • 他們是spring核心思想的不同方面的描述

  • 依賴注入和控制反轉是對同一件事情的不同描述,從某個方面講,就是他們描述的角度不同

  • 依賴注入是從應用程式的角度在描述,應用程式依賴容器建立並注入它所需要的外部資源

  • 控制反轉是從容器的角度在描述,容器控制應用程式,而容器反向的嚮應用程式注入應用程式所需要的外部資源

​​​​​​​初學,部分借鑑他人部落格做的總結。