首頁>技術>

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筆記

可以透過上方式獲得,內容很乾,學完都可以寫到【簡歷】裡!!!

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Jetpack架構元件庫ViewModel資料儲存進階