聊完了Spring框架中最重要的兩種設計模式,咱們來看一下Spring框架的模塊和結構圖。
下圖是Spring官方給出的Spring框架的結構圖。spring
從圖中咱們能夠看到Spring的四大部分:核心容器(container)、AOP模塊、Web模塊、Data模塊。編程
咱們能夠看到Spring給咱們提供的模塊至關的豐富,不管是持久層、業務層仍是控制層都有所涉及。設計模式
既然Spring如此的方便,那麼它又是如何作到的呢?緩存
很簡單,經過兩點:安全
既然說到控制反轉,那麼咱們不由要問什麼控制被反轉了?
答案是:咱們對對象的控制權被反轉了。咱們將對象的控制交給了Spring的容器。框架
那麼問題又來了,什麼是Spring的容器?
簡單的說,Spring容器就是一個超級大工廠,負責建立、管理全部的Java對象,這些Java對象被稱爲Bean。Spring容器管理着容器中Bean之間的依賴關係,Spring使用一種被稱爲「依賴注入」的方式來管理Bean之間的依賴關係。編碼
什麼又是依賴注入呢?
依賴注入(DI)就是控制反轉的一種實現形式,Spring容器也是經過這種形式管理Bean的。spa
Spring容器如何作到替你管理這些bean的呢?
工廠模式。設計
Spring框架費了九牛二虎之力建立一個Spring容器去幫咱們管理這些Bean又有什麼好處呢?
其實和工廠模式的好處差很少:代理
聊完了控制反轉咱們再來看看Spring框架的另外一項關鍵技術AOP。
什麼是面向切面編程?
面向切面編程:在運行時,動態地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程。
這句話讀完估計跟沒讀沒什麼區別,仍是沒懂。下面咱們來看一張圖:
從圖中咱們能夠看出:咱們每寫一個業務功能,都須要判斷權限、記錄日誌、提交事務、這些邏輯是否是都是重複的呀,這至關於什麼呢?至關於咱們前面說的髒活累活,這都不是咱們的重點,咱們的重點是業務邏輯,就是說咱們須要把總體框架搭好,實際編寫的時候只須要將咱們的業務代碼切入到框架之中,就好了。
原理:代理模式。
爲何須要AOP?
AOP專門用於處理系統中分佈於各個模塊或者不一樣方法中的交叉關注點的問題。好比:在程序中,咱們經常須要處理一些具備橫切性質的系統級服務,如事務管理、安全檢查、緩存、對象池管理等,AOP是一種很是經常使用的解決方案。
面向切面編程對咱們來講有什麼好處?
注意:面向切面編程只是面向對象編程的一種補充。
講了這麼多咱們來對Spring框架作一個總結。
下一節,咱們將討論Spring框架在WEB開發的應用Spring MVC。