Spring原理講解什麼是Spring框架,Spring框架主要包含哪些模組Spring框架的優勢IOC和DI是什麼?描述下Spring IOC容器的初始化過程BeanFactory 和 FactoryBean的區別?BeanFactory和ApplicationContext的異同Spring Bean 的生命週期?Spring AOP的實現原理?Spring 是如何管理事務的?Spring 的不同事務傳播行為有哪些,幹什麼用的?Spring 中用到了那些設計模式?Spring如何解決迴圈依賴?bean的作用域Spring框架中有哪些不同型別的事件Spring通知有哪些型別Spring的自動裝配
部分筆記內容
什麼是Spring框架,Spring框架主要包含哪些模組Spring是一個開源框架,Spring是一個輕量級的Java 開發框架。它是為了解決企業應用開發的複雜性而建立的。框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個元件,同時為 J2EE 應用程式開發提供整合的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和麵向切面(AOP)。簡單來說,Spring是一個分層的full-stack(一站式) 輕量級開源框架。
2、Spring框架的優勢1、Spring透過DI、AOP和消除樣板式程式碼來簡化企業級Java開發
2、Spring框架之外還存在一個構建在核心框架之上的龐大生態圈,它將Spring擴充套件到不同的領域,如Web服務、REST、移動開發以及NoSQL
3、低侵入式設計,程式碼的汙染極低
4、獨立於各種應用伺服器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾
5、Spring的IoC容器降低了業務物件替換的複雜性,提高了元件之間的解耦
6、Spring的AOP允許將一些通用任務如安全、事務、日誌等進行集中式處理,從而提供了更好的複用
7、Spring的ORM和DAO提供了與第三方持久層框架的的良好整合,並簡化了底層的資料庫訪問
8、Spring的高度開放性,並不強制應用完全依賴於Spring,開發者可自由選用Spring框架的部分或全部
IOC和DI是什麼?控制反轉是就是應用本身不負責依賴物件的建立和維護,依賴物件的建立及維護是由外部容器負責的,這樣控制權就有應用轉移到了外部容器,控制權的轉移就是控制反轉。
依賴注入是指:在程式執行期間,由外部容器動態地將依賴物件注入到元件中如:一般,透過建構函式注入或者setter注入。
Spring的自動裝配在spring中,物件無需自己查詢或建立與其關聯的其他物件,由容器負責把需要相互協作的物件引用賦予各個物件,使用autowire來配置自動裝載模式。
在Spring框架xml配置中共有5種自動裝配:
(1)no:預設的方式是不進行自動裝配的,透過手工設定ref屬性來進行裝配bean。
(2)byName:透過bean的名稱進行自動裝配,如果一個bean的 property 與另一bean 的name 相同,就進行自動裝配。
(3)byType:透過引數的資料型別進行自動裝配。
(4)constructor:利用建構函式進行裝配,並且建構函式的引數透過byType進行裝配。
(5)autodetect:自動探測,如果有構造方法,透過 construct的方式自動裝配,否則使用 byType的方式自動裝配。
基於註解的方式:
使用@Autowired註解來自動裝配指定的bean。在使用@Autowired註解之前需要在Spring配置檔案進行配置,<context:annotation-config />。在啟動spring IoC時,容器自動裝載了一個AutowiredAnnotationBeanPostProcessor後置處理器,當容器掃描到@Autowied、@Resource或@Inject時,就會在IoC容器自動查詢需要的bean,並裝配給該物件的屬性。在使用@Autowired時,首先在容器中查詢對應型別的bean:
如果查詢結果剛好為一個,就將該bean裝配給@Autowired指定的資料;
如果查詢的結果不止一個,那麼@Autowired會根據名稱來查詢;
如果上述查詢的結果為空,那麼會丟擲異常。解決方法時,使用required=false。
@Autowired可用於:建構函式、成員變數、Setter方法
注:@Autowired和@Resource之間的區別
(1) @Autowired預設是按照型別裝配注入的,預設情況下它要求依賴物件必須存在(可以設定它required屬性為false)。
(2) @Resource預設是按照名稱來裝配注入的,只有當找不到與名稱匹配的bean才會按照型別來裝配注入。
Spring架構設計附影片好了,到這裡,整個筆記介紹的差不多了,感興趣的同學可以領取一波!
資料:spring筆記
可以透過上方式獲得,內容很乾,學完都可以寫到【簡歷】裡!!!