【面試】Spring 執行流程


Spring Aop的實現原理:

  1. AOP 的全稱是  Aspect Orient Programming  ,即面向切面編程。是對 OOP (Object Orient Programming) 的一種補充,專門用於處理一些具有橫切性質的服務。常常用於日志輸出、、安全控制等。
  2. AOP(面向切面編程思想)主要是的實現技術有 Spring AOP  和  AspectJ。
    1. AspectJ 的底層技術:AspectJ 的底層技術是靜態代理,即用一種AspectJ 支持的特定語言編寫切面,通過一個命令來編譯,生成一個新的代理類,該代理類增強了業務類,這是在編譯時增i強,相對於下面說的運行時增強,編譯時增強的性能更好。
    2. Spring AOP : Spring AOP 采用的是動態代理,在運行期間對業務方法進行增強,所以不會生成新類,對於動態代理技術,Spring AOP 提供了對 JDK 動態代理的支持以及 CFLib的支持。

     JDK 動態代理只能為接口創建動態代理實力,而不能對類創建動態代理。需要獲得被目標類的接口信息(應用 JAVA 的反射技術),生成一個實現了代理接口的動態代理類(字節碼),再通過反射機制獲得動態代理類的構造函數,利用構造函數生成動態代理類的實例對象,在調用具體方法前調用 invokeHandler 方法來處理。

  CGLib 動態代理需要依賴ASM包,把代理對象類的 class 文件加載進來,修改其字節碼生成子類。

  但是 Spring AOP 基於注解配置的情況下,需要依賴於 AspectJ 包的標准注解,但是不需要額外的編譯以及 AspectJ 的植入器,而基於 XML 配置不需要。


 

Spring ioc的實現原理:

  1. :控制反轉也叫依賴注入,IOC利用java反射機制,AOP利用代理模式。所謂控制反轉是指,本來被調用者的實例是有調用者來創建的,這樣的缺點是耦合性太強,IOC則是統一交給spring來管理創建,將對象交給容器管理,你只需要在spring配置文件總配置相應的bean,以及設置相關的屬性,讓spring容器來生成類的實例對象以及管理對象。在spring容器啟動的時候,spring會把你在配置文件中配置的bean都初始化好,然后在你需要調用的時候,就把它已經初始化好的那些bean分配給你需要調用這些bean的類。
    ----------------------------------------------------------------------------------------------
    原文鏈接:https://blog.csdn.net/monkeyduck/article/details/54344890

     


Spring的執行流程:

WEB 容器啟動時,Spring 加載執行步驟

    1. 執行 Web.XML 中的 ContextLoaderListener 監聽器
    2. 初始化 COntextLoaderListener 中的 ContextInitialized 方法
    3. ContextInitialized 方法中調用父類 ( ContextLoader ) 的 initWebAppcalicationContext 的方法
    4. initWebAppcalitionContext 方法中執行了三個任務
      1. 創建 WebApplicationContext 容器
      2. 加載 Context-Param 中配置的 Spring 配置文件
      3. 初始化配置文件中及創建配置文件中的 bean
    5. Web 容器停止時候會執行 ContextLoaderLoaderListener 的 ContextDesroyed 方法銷毀 Context 容器

 

SSM框架的工作原理(執行原理,必問):

  1. 用戶發送請求至前端控制器 DispatcherServlet
  2. DispatcherServlet 收到請求調用 HandlerMapping 處理映射器。
  3. 處理映射器根據請求 url 找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一並返回給 DispatcherServlet 。
  4. DispatcherServlet 通過 HandlerAdapter 處理器適配器調用處理器。
  5. 執行處理器(Controller,也叫后端處理器)執行完成返回ModelAndVIew.
  6. HandlerAdapter 將 Controller 執行結果 ModelAndView 返回給 DispatcherServlet
  7. DispatcherServlet 將ModelAndView 傳給 ViewReslover 視圖解析器
  8. ViewReslover 解析后返回具體 View
  9. DispatcherServlet 對 View 進行渲染視圖(即將模型數據填充至視圖中)
  10. DispatcherServlet 響應用戶

 

什么是 SpringMvc ?

SpringMvc 是 Spring 框架的一個模塊, SpringMvc 和 Spring 無需通過中間整合層進行整合。

SpringMvc 是基於 MVC 的一個 Web 框架。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM