摘要:模塊負責的所有面向切面的功能。總結的統一管理,降低了對象之間的耦合對主流的框架提供了很好的集成支持提供眾多組件,事務管理,等具有高度可開放性,開發者可以自由選擇部分或全部主要使用工廠模式和代理模式。
聊完了Spring框架中最重要的兩種設計模式,我們來看一下Spring框架的模塊和結構圖。Spring框架的結構
下圖是Spring官方給出的Spring框架的結構圖。
從圖中我們可以看到Spring的四大部分:核心容器(container)、AOP模塊、Web模塊、Data模塊。
首先看核心容器,從核心倆字我們可以看出,這是Spring最重要的部分。主要的功能是實現了控制反轉(IOC)與依賴注入(DI)、Bean配置、加載以及生命周期的管理。
AOP模塊:負責Spring的所有AOP(面向切面)的功能。
Web模塊:擴展了Spring的Web功能。使其符合MVC的設計規范,最重要的是提供了Spring MVC的容器。
Data模塊:提供了一些數據相關的組件:包括JDBC、orm(對象關系映射)、事務操作、oxm(對象xml映射)、Jms(Java消息服務)。
我們可以看到Spring給我們提供的模塊相當的豐富,無論是持久層、業務層還是控制層都有所涉及。
Spring幾乎包攬除了業務邏輯之外的的所有工作,包括日志管理、事務管理、Bean管理、安全管理等。
Spring致力于全套的Java問題的解決方案,在所有的Java可以涉足的領域,Spring都會提供相應的支持。(即使沒有支持,也會讓我們去整合)
與第三方框架的整合。在我的理解中Spring框架就像一個插線板,而第三方框架就相當于插頭,可以輕易地與它組合在一起。需要的時候就插上去,不需要的時候就拔掉,相當的方便。
既然Spring如此的方便,那么它又是如何做到的呢?
很簡單,通過兩點:
控制反轉(IOC)
面向切面編程(AOP)
控制反轉(IOC)/依賴注入(DI)既然說到控制反轉,那么我們不禁要問什么控制被反轉了?
答案是:我們對對象的控制權被反轉了。我們將對象的控制交給了Spring的容器。
那么問題又來了,什么是Spring的容器?
簡單的說,Spring容器就是一個超級大工廠,負責創建、管理所有的Java對象,這些Java對象被稱為Bean。Spring容器管理著容器中Bean之間的依賴關系,Spring使用一種被稱為“依賴注入”的方式來管理Bean之間的依賴關系。
什么又是依賴注入呢?
依賴注入(DI)就是控制反轉的一種實現形式,Spring容器也是通過這種形式管理Bean的。
Spring容器如何做到替你管理這些bean的呢?
工廠模式。
Spring框架費了九牛二虎之力創建一個Spring容器去幫我們管理這些Bean又有什么好處呢?
其實和工廠模式的好處差不多:
解除硬編碼耦合,利于項目升級和維護;
簡化了對象的管理,使我們更加專注于業務操作;
聊完了控制反轉我們再來看看Spring框架的另一項關鍵技術AOP。
面向切面編程(AOP)什么是面向切面編程?
面向切面編程:在運行時,動態地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程。
這句話讀完估計跟沒讀沒什么區別,還是沒懂。下面我們來看一張圖:
從圖中我們可以看出:我們每寫一個業務功能,都需要判斷權限、記錄日志、提交事務、這些邏輯是不是都是重復的呀,這相當于什么呢?相當于我們前面說的臟活累活,這都不是我們的重點,我們的重點是業務邏輯,就是說我們需要把整體框架搭好,實際編寫的時候只需要將我們的業務代碼切入到框架之中,就行了。
原理:代理模式。
為什么需要AOP?
AOP專門用于處理系統中分布于各個模塊或者不同方法中的交叉關注點的問題。比如:在程序中,我們常常需要處理一些具有橫切性質的系統級服務,如事務管理、安全檢查、緩存、對象池管理等,AOP是一種非常常用的解決方案。
面向切面編程對我們來說有什么好處?
減少重復;
專注業務;
注意:面向切面編程只是面向對象編程的一種補充。
講了這么多我們來對Spring框架做一個總結。
Spring 總結Bean的統一管理,降低了對象之間的耦合
對主流的框架提供了很好的集成支持
提供眾多組件,事務管理,JDBC等
具有高度可開放性,開發者可以自由選擇Spring部分或全部
主要使用工廠模式和代理模式。
低侵入,代碼污染極低。(我們不會因為用了spring而影響我們的正常的業務邏輯)
AOP的很好支持,方便面向切面編程(AspectJ)。
下一節,我們將討論Spring框架在WEB開發的應用Spring MVC。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68181.html
摘要:是結構在框架中的一種表現形式。這句話聽起來有點繞,我們可以看一下下面這張圖,大家可以吧容器中的理解為全局變量,吧容器中的理解為局部變量。在方法體中可以訪問局部變量和全局變量,但是在方法外,就只能訪問全局變量,是不能訪問局部變量的。 聊完了Spring,我們來看看Spring在web方面的應用Spring MVC。 MVC 首先我們來看什么是mvc? 大家知道在jsp里面也是可以寫jav...
摘要:通過我們可以更輕松地入門,更簡單的使用的框架。團隊為了擺脫框架中各類繁復紛雜的配置,使用約定優于配置的思想,在基礎上整合了大量常用的第三方庫的開發框架。這里還要說的一點,的出現并不是單純的為了簡化開發,更是為做鋪墊。 說完了Spring 我們來聊聊Spring的進階版Spring Boot,如果你還不知道Spring Boot,那希望這篇文章能夠為你指明方向。 Spring Boot ...
摘要:聊完了工廠模式,下面我們來說框架中的另一個核心設計模式代理模式。這里的外賣小哥就相當于是我們的代理。主要分為代理和代理。 聊完了工廠模式,下面我們來說Spring框架中的另一個核心設計模式——代理模式(Proxy Pattern)。 代理模式 大家可以先不用看概念,先舉個吃飯的例子:比如說我們想吃飯,我們可以選擇自己做飯吃、去飯店吃、叫外賣吃。如果我們選擇自己做著吃,我們就需要去買菜、...
摘要:相對于工廠模式,抽象工廠模式生產的對象更加具體,也更加豐富,但相對編碼也更加復雜。具體的抽象工廠模式的實現大家可以參考菜鳥教程。知道了工廠模式和抽象工廠模式的區別,請大家使用的時候應該根據具體的情況進行選擇。 大家好,今天給大家分享一些Spring的學習心得,在講Spring之前,先和大家分享Spring中核心的設計模式。 工廠模式 在聊概念之前我先問問大家:什么是工廠? 這個很簡單,...
摘要:系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注于完成一件任務并很好地完成該任務。傳統架構升級困難。新的輕量級協議容器化的出現。熔斷處理在微服務出現問題時防止出現雪崩效應。 聊完Spring Boot,我們來看看Spring Boot最重要的一方面的應用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我們先聊聊微服務。 ...
閱讀 1270·2023-04-25 19:10
閱讀 1146·2021-09-10 10:50
閱讀 3034·2021-09-02 15:21
閱讀 1390·2019-08-30 15:52
閱讀 1687·2019-08-30 13:56
閱讀 2091·2019-08-30 12:53
閱讀 1876·2019-08-28 18:22
閱讀 2128·2019-08-26 13:47