Spring和SpringMVC源碼分析

1. Spring源碼分析

(1) Spring的運行流程是什麼
Spring 啓動時讀取應用程序提供的 Bean 配置信息,並在 Spring 容器中生成一份相應的 Bean 配置註冊表,然後根據這張註冊表實例化 Bean,裝配好 Bean 之間的依賴關係,爲上 層應用提供準備就緒的運行環境.
(2) 寫出Spring重要的類和接口以及作用]
ApplicationContextAware 接口
作用: 用於幫助獲取 Spring 的上下文
當Bean 實現了ApplicationContextAware接口,setApplicationContext() 在 Bean 初始化結束後被調用

BeanNameAware
作用:用於獲取該在 Spring 容器中的名稱
setBeanName(String name) 方法在 Bean 初始化後被調用

ApplicationListener
作用:Spring 時間機制用於監聽異步廣播事件 ApplicationEvent 事件
任何 ApplicationListener 接口的類 onAppEvent() 會收到 ApplicationEvent 事件。Dubbo ServiceBean 就實現了此接口 finishRefresh() 中會發送 ContextRefreshedEvent 事件用於觸發服務發佈。

InitializingBean
作用: afterPropertiesSet() Bean 中屬性設置完後,也就是 IOC,依賴注入完後被調用
afterPropertiesSet() 跟 initMethod 方法類似,initMethod採用反射方式被調用
Mybatis 的 MapperScannerConfigurer 類就實現了此接口

DisposableBean
作用: destroy(),方法在 Bean 被銷燬後被調用
與 destroy-method() 方法類似

BeanDefinitionRegistryPostProcessor
作用: 用於動態註冊 Bean ,即類沒有被納入 Spring 容器管理。BeanDefinitionRegistryPostProcessor繼承自BeanFactoryPostProcessor
可以自定義的註冊bean定義的邏輯

FactoryBean
作用:實例工廠定義一種類型並創建一個實例交給 Spring 容器管理

		BeanPostProcessor

作用:在 Spring 容器完成 Bean 的實例化、配置和其他的初始化前後添加一些自己的邏輯處理

BeanFactoryPostProcessor
作用: 對應 BeanFactory 加載完bean的定義後回調 postProcessBeanFactory()

		BeanDefinition

作用:用於裝載 配置文件 xml 內容

2. SpringMVC底層源碼分析

(1) 寫出SpringMVC運行原理
在這裏插入圖片描述
(2) 寫出SpringMVC常用類和接口以及作用
DispatcherServlet – 前置控制器
HandlerMapping接口 – 處理請求的映射

HandlerMapping接口的實現類:
SimpleUrlHandlerMapping 通過配置文件,把一個URL映射到Controller
DefaultAnnotationHandlerMapping 通過註解,把一個URL映射到Controller類上

HandlerAdapter接口 – 處理請求的映射
AnnotationMethodHandlerAdapter類,通過註解,把一個URL映射到Controller類的方法上

Controller接口 – 控制器
HandlerInterceptor 接口–攔截器
ViewResolver接口的實現類
UrlBasedViewResolver類 通過配置文件,把一個視圖名交給到一個View來處理
InternalResourceViewResolver類,比上面的類,加入了JSTL的支持

HandlerExceptionResolver接口 --異常處理
SimpleMappingExceptionResolver實現類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章