Spring Aop的實現原理:
- AOP 的全稱是 Aspect Orient Programming ,即面向切面編程。是對 OOP (Object Orient Programming) 的一種補充,專門用於處理一些具有橫切性質的服務。常常用於日志輸出、、安全控制等。
- AOP(面向切面編程思想)主要是的實現技術有 Spring AOP 和 AspectJ。
- AspectJ 的底層技術:AspectJ 的底層技術是靜態代理,即用一種AspectJ 支持的特定語言編寫切面,通過一個命令來編譯,生成一個新的代理類,該代理類增強了業務類,這是在編譯時增i強,相對於下面說的運行時增強,編譯時增強的性能更好。
- Spring AOP : Spring AOP 采用的是動態代理,在運行期間對業務方法進行增強,所以不會生成新類,對於動態代理技術,Spring AOP 提供了對 JDK 動態代理的支持以及 CFLib的支持。
JDK 動態代理只能為接口創建動態代理實力,而不能對類創建動態代理。需要獲得被目標類的接口信息(應用 JAVA 的反射技術),生成一個實現了代理接口的動態代理類(字節碼),再通過反射機制獲得動態代理類的構造函數,利用構造函數生成動態代理類的實例對象,在調用具體方法前調用 invokeHandler 方法來處理。
CGLib 動態代理需要依賴ASM包,把代理對象類的 class 文件加載進來,修改其字節碼生成子類。
但是 Spring AOP 基於注解配置的情況下,需要依賴於 AspectJ 包的標准注解,但是不需要額外的編譯以及 AspectJ 的植入器,而基於 XML 配置不需要。
Spring ioc的實現原理:
-
:控制反轉也叫依賴注入,IOC利用java反射機制,AOP利用代理模式。所謂控制反轉是指,本來被調用者的實例是有調用者來創建的,這樣的缺點是耦合性太強,IOC則是統一交給spring來管理創建,將對象交給容器管理,你只需要在spring配置文件總配置相應的bean,以及設置相關的屬性,讓spring容器來生成類的實例對象以及管理對象。在spring容器啟動的時候,spring會把你在配置文件中配置的bean都初始化好,然后在你需要調用的時候,就把它已經初始化好的那些bean分配給你需要調用這些bean的類。
----------------------------------------------------------------------------------------------
原文鏈接:https://blog.csdn.net/monkeyduck/article/details/54344890
Spring的執行流程:
WEB 容器啟動時,Spring 加載執行步驟
-
- 執行 Web.XML 中的 ContextLoaderListener 監聽器
- 初始化 COntextLoaderListener 中的 ContextInitialized 方法
- ContextInitialized 方法中調用父類 ( ContextLoader ) 的 initWebAppcalicationContext 的方法
- initWebAppcalitionContext 方法中執行了三個任務
- 創建 WebApplicationContext 容器
- 加載 Context-Param 中配置的 Spring 配置文件
- 初始化配置文件中及創建配置文件中的 bean
- Web 容器停止時候會執行 ContextLoaderLoaderListener 的 ContextDesroyed 方法銷毀 Context 容器
SSM框架的工作原理(執行原理,必問):
- 用戶發送請求至前端控制器 DispatcherServlet
- DispatcherServlet 收到請求調用 HandlerMapping 處理映射器。
- 處理映射器根據請求 url 找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一並返回給 DispatcherServlet 。
- DispatcherServlet 通過 HandlerAdapter 處理器適配器調用處理器。
- 執行處理器(Controller,也叫后端處理器)執行完成返回ModelAndVIew.
- HandlerAdapter 將 Controller 執行結果 ModelAndView 返回給 DispatcherServlet
- DispatcherServlet 將ModelAndView 傳給 ViewReslover 視圖解析器
- ViewReslover 解析后返回具體 View
- DispatcherServlet 對 View 進行渲染視圖(即將模型數據填充至視圖中)
- DispatcherServlet 響應用戶
什么是 SpringMvc ?
SpringMvc 是 Spring 框架的一個模塊, SpringMvc 和 Spring 無需通過中間整合層進行整合。
SpringMvc 是基於 MVC 的一個 Web 框架。