Spring是什麼?
Spring是一個分層,輕量級兼容性高的一站式(一條龍服務)開源框架。
分層:表現層SpringMVC,業務邏輯層(Dao層)管理事務、記錄日誌,持久層(數據訪問 層)MyBatis。
輕量級:高內聚低耦合 低耦合·對象得創建和依賴關係的維護都交給Spring容器管 理。(IOC控制反轉)
兼容性高:面向切面開發(AOP)。
Spring的核心
IOC控制反轉
IOC是什麼?
IOC是一種理論:藉助於“第三方容器”實現具有依賴關係的對象之間的解耦(IOC是一種理論思想,它的存在形式是第三方容器,被命名爲IOC容器)
IOC容器,使得A、B、C、D這4個對象沒有了耦合關係,齒輪之間的傳動全部依靠“第 三方”了,全部對象的控制權全部上繳給“第三方”IOC容器,所以,IOC容器成了整個系 統的關鍵核心,它起到了一種類似“粘合劑”的作用,把系統中的所有對象粘合在一起發 揮作用,如果沒有這個“粘合劑”,對象與對象之間會彼此失去聯繫,這就是有人把IOC容器比喻成“粘合劑”的由來。
爲什麼叫IOC控制反轉?
軟件系統在沒有引入IOC容器之前,如圖所示,對象A依賴於對象B,那麼對象A在初始化或者運行到某一點的時候,自己必須主動去創建對象B或者使用已經創建的對象B。無論是創建還是使用對象B,控制權都在A手上。
軟件系統在引入IOC容器之後,這種情形就完全改變了,如圖所示,由於IOC容器的加入,對象A與對象B之間失去了直接聯繫,所以,當對象A運行到需要對象B的時候,IOC容器會主動創建一個對象B注入到對象A需要的地方。
通過前後的對比,我們不難看出來:對象A獲得依賴對象B的過程,由主動行爲變爲了被動行爲,控制權顛倒過來了,這就是“控制反轉”這個名稱的由來。
IOC理論的實現方式DI
什麼是DI?
DI依賴注入:是指由IOC容器在運行期間,動態主動地將某種依賴關係注入到對象之中。(DI是一種過程,是指由IOC容器運行中將某種依賴關係注入到對象)
·所以,依賴注入(DI)和控制反轉(IOC)是從不同的角度的描述的同一件事情,就是指通過引入IOC容器,利用依賴關係注入的方式,實現對象之間的解耦。
AOP面向切面編程
什麼是AOP?
AOP概念:面向切面編程:擴展功能不修改源代碼實現。
AOP採用橫向抽取機制,取代傳統的縱向繼承體系重複性代碼(性能監視,事務管理,安全檢查,緩存)
Core Container(核心容器)
Beans模塊:
什麼是Beans模塊
Bean工廠與bean的裝配,BeanFactory接口使用控制反轉對應用程序的配置、依賴性規範與實際的應用程序代碼進行分離。但是BeanFactory容器實例化後並不會自動實例化Bean,只有當Bean被使用時BeanFactory容器纔會對該Bean進行實例化與依賴關係的裝配。
Core模塊:
控制反轉IoC(Inversion of Control)與依賴注入DI(Dependency Injection)的基本實現,控制反轉是種設計思想,即將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制。
Context模塊:
spring的context上下文,即IoC容器,它擴展了BeanFactory,爲它添加了Bean生命週期管理、框架事件體系、資源加載透明化等功能,此外該模塊還提供了很多企業級支持,如遠程訪問、任務調度等。ApplicationContext是該模塊的核心接口,它擴展了BeanFactory,ApplicationContext容器實例化後會自動對所有的單實例Bean進行實例化與依賴關係的裝配,使之處於待用狀態。
spring-expression模塊:
spring表達式語言,是統計表達式語言(EL)的擴展模塊,可以查詢、管理運行中的對象,同時也方便的可以調用對象方法、操作數組、集合等。最出色的要數函數調用和簡單字符串的模板函數。