1.Spring中使用到了哪些設計模式?
工廠模式:如通過BeanFactory或ApplicationContext建立Bean對象;
單例模式:Spring中的Bean對象就是單例模式;
代理模式:Spring AOP就是基于動态代理實作的;
擴充卡模式:Spring MVC中,DispatcherServlet根據請求找到Handler後,開始由擴充卡處理;
裝飾者模式:使DataSource在不改動代碼的情況下切換資料源;
政策模式:Spring對資源的通路,如Resource接口;
2.Spring Bean的生命周期流程
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iNkZWOjlTN1MTN0QzMmNzMxQzYjNWY2gzN0YWOzYzN58CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
執行個體化、初始化、服務、銷毀;
初始化階段有個最重要的接口→BeanPostProcessor;
![]()
Spring複習總結
3.什麼是IOC和AOP?
IOC(控制反轉):由對象自身建立自己的關聯或者依賴對象改變為由外部容器将關聯或依賴對象建立;
好處:實作了對象之間的解耦,同時降低了應用開發的代碼和複雜度,使開發人員更專注業務;
AOP(切面程式設計):把程式中一些重複的代碼抽出來做成一個個的切面;
好處:降低業務邏輯耦合性,提高程式的可重用性和開發效率;
4.Spring有哪些容器類?
BeanFactory:是一個最簡單的容器,主要功能是為依賴注入提供支援;
ApplicationContext:是spring中的進階容器,是BeanFactory的子接口,支援懶加載的相關配置,也有功能增強;
5.BeanFactory和ApplicationContext的差別?
BeanFactory:在啟動的時候不會去執行個體化Bean,隻有從容器中拿Bean的時候才會去執行個體化,不支援懶加載相關的配置;
ApplicationContext:在啟動的時候就執行個體化所有的Bean,支援懶加載相關的配置,是BeanFactory的子接口;
6.Bean的作用域
7.Spring的單例是否線程安全?
singleton:不安全;
prototype:安全;
8.BeanFactory和FactoryBean的差別?
BeanFactory:是一個工廠類,用于管理Bean的一個工廠,在Spring中,所有的Bean都是由BeanFactory來進行管理的;
FactoryBean:也是一個Bean,這個Bean不是一個簡單的Bean,可以對Bean的執行個體化過程進行修飾或者自定義,但是FactoryBean本質是BeanFactory管理的;
9.Spring事務的隔離級别?
DEFAULT(預設);
READ_UNCOMMITTED(讀未送出);
READ_COMMITTED(讀已送出);
REPEATABLE_READ(可重複讀);
SERIALIZABLE(可串行化);
10.Spring事務失效的原因?
非public方法;
事務未被spring接管;
異常類型不對;
資料源不支援事務;
11.SpringMVC的工作流程
使用者通過浏覽器給前端處理器(DispatchServlet)發送請求;
前端處理器将請求轉發給處理器映射器(HandlerMapping);
處理器映射器根據請求找到負責該請求的處理器,封裝為處理器執行鍊後傳回給前端控制器;
前端控制器根據執行鍊中的處理器找到對應的處理器擴充卡;
處理器擴充卡調用處理器的Controller;
Controller将處理結果及映射視圖封裝到ModelAndView對象中,并将其傳回給處理器擴充卡;
處理器擴充卡将結果傳回給前端控制器;
前端控制器調用視圖解析器将ModelAndView中的視圖封裝成視圖對象;
視圖解析器将封裝的視圖view對象傳回給前端控制器;
前端控制器調用視圖對象,對其進行渲染形成響應對象,傳回給用戶端浏覽器;
![]()
Spring複習總結