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的流程:(轉自他人部落格)
-
使用者傳送請求至前端控制器DispatcherServlet;
-
DispatcherServlet收到請求呼叫HandlerMapping處理器對映器;
-
處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給DispatcherServlet;
-
DispatcherServlet通過HandlerAdapter處理器介面卡呼叫處理器,執行處理器(Controller,也叫後端控制器);
-
Controller執行完成返回ModelAndView,並返回給HandlerAdapter,HandlerAdapter將結果返回給DispatcherServlet;
-
DispatcherServlet將ModelAndView傳給ViewReslover檢視解析器,ViewReslover解析後返回具體View給DispatcherServlet;
-
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核心思想的不同方面的描述
-
依賴注入和控制反轉是對同一件事情的不同描述,從某個方面講,就是他們描述的角度不同
-
依賴注入是從應用程式的角度在描述,應用程式依賴容器建立並注入它所需要的外部資源
-
控制反轉是從容器的角度在描述,容器控制應用程式,而容器反向的嚮應用程式注入應用程式所需要的外部資源
初學,部分借鑑他人部落格做的總結。