當前位置:
首頁 > 知識 > Spring綜述

Spring綜述

關鍵詞:Spring框架、SpringIOC容器、SpringAOP、SpringMVC、Springboot、設計模式

一、Spring是什麼

Spring框架是一個開源的、輕量級的J2EE開發框架,核心思想是IOC實現松耦合,利用AOP將應用的業務邏輯與系統服務分離;

廣義上地說,Spring是一系列開源項目的總稱,SpringIOCSpringMVC等只是其中的開源項目而已

二、Spring生態

Spring容器:

專門存放和管理對象及對象間關係的類

https://blog.csdn.net/zorkeaccount/article/details/80818711

SpringIOC:

利用工廠模式+反射實現Spring容器

https://blog.csdn.net/zorkeaccount/article/details/80503941

SpringAOP:

動態代理,即在運行時生成AOP代理對象

https://blog.csdn.net/zorkeaccount/article/details/80517710

SpringMVC:

基於Servlet的一個MVC-web框架,是Spring的一個模塊,提供了一種輕度耦合的方式來開發web應用;

通過Dispatcher Servlet, ModelAndView 和 View Resolver,使得開發web應用變得很容易;解決的問題領域是網站應用程序或者服務開發——URL路由、Session、模板引擎、靜態Web資源等等。

Springboot:

由於Spring框架需要進行大量的配置,Spring Boot引入自動配置的概念,讓項目設置變得很容易,降低了項目搭建的複雜度

Spring Boot本身並不提供Spring框架的核心特性以及擴展功能,只是用於快速、敏捷地開發新一代基於Spring框架的應用程序

Spring設計模式:

簡單工廠(靜態工廠方法)模式:

其實質就是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類,不屬於23種GOF設計模式之一;

BeanFactory類,就是根據傳入的一個唯一標識來獲取bean對象,但傳參前還是傳參後創建該bean對象視具體情況而定

工廠方法Factory Method模式:

定義一個用於創建對象的工廠bean介面,由實現類子類決定實例化哪一個類,也即工廠方法模式將一個類的實例化(bean對象生成)延遲到其子類;

FactoryBean介面及其各個實現子類就是典型的工廠方法模式

單例Singleton模式:

保證一個類只有一個實例,並對外提供一個可以訪問它的全局訪問點;

Spring中每個bean定義只生成一個對象實例,有兩種模式餓漢模式(即類載入時已初始化,預設時默認為該模式,容器啟動即實例化容器時,為所有spring配置文件中定義的bean都生成一個實例)和懶漢模式(即類載入時不初始化,<beans default-lazy-init="true">)=>【如可通過靜態變數是否初始化實現餓漢和懶漢兩種方式】

適配器Adapter模式:

將一個類的介面轉換成另外一個介面

Spring中對於aop的處理用到Adapter模式,如因Advisor鏈需要的是MethodInterceptor對象,所以每一個Advisor中的Advice對象都是適配成對應的MethodInterceptor對象

包裝器Decortor模式:

動態地給一個對象添加一些額外的職責,增加功能角度而言該模式比生產子類更加靈活;

Spring中用到包裝器模式的類如:*Wrapper.java,或者*Decorator.java

代理Proxy模式:

為其他對象提供一種代理以控制對這個對象的訪問,結構上類似於Decortor模式,但Proxy為控制是一種對功能的限制而Decortor是增加職責

Spring中aop的思想就是Proxy模式,比如JdkDynamicAopProxy和Cglib2AopProxy

觀察者Observer模式:

定義對象間一種一對多的依賴關係,當一個對象的狀態改變時,所有依賴於該對象的其他對象均會得到通知並自動更新

Spring中listen的實現,如ApplicationListener

策略Strategy模式:

定義一系列演算法,並且將它們一個個封裝起來且可以互相替換,使得演算法可獨立於使用它的客戶而發生變化

Spring中如SimpleInstantiationStrategy

模板方法Template Method模式:

定義一個操作中演算法的骨架,而將一些步驟延遲到子類中;模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟,該模式一般是需要繼承的(也可以不需要繼承的,如JdbcTemplate)

Springboot註解:

@SpringBootApplication:

Springboot的入口註解,是多個註解的組合,其中比較重要的是@EnableAutoConfiguration註解,即可自動化配置,這是SpringBoot可以方便快捷地新建和啟動一個項目的關鍵

@EnableAutoConfiguration:

該註解比較重要的是導入了可自動化配置導入選擇器,@Import({EnableAutoConfigurationImportSelector.class})

有關該springboot註解的詳細分析過程可見,springboot自動化配置

三、Spring&SpringMVC&Springboot之間的關係和區別

Spring是一個輕量級的控制反轉(IOC)和面向切面(AOP)的容器框架,通過容器管理JavaBean(代替EJB)的配置和聲明周期; -> 即Spring是一個管理bean的容器,可稱之為SpringIOC容器

SpringMVC是一個MVC框架容器,負責controller相關的Bean的管理,且SpringIOC容器的子容器;

Springboot本質上就是Spring,只不過做了一些SpringBean的默認配置(開箱即用、快速啟動);

通俗地說,就是:Spring 最初利用「工廠模式」(DI)和「代理模式」(AOP)解耦應用組件。大家覺得挺好用,於是按照這種模式搞了一個 MVC框架(一些用Spring 解耦的組件),用開發 web 應用( SpringMVC )。然後有發現每次開發都寫很多樣板代碼,為了簡化工作流程,於是開發出了一些「懶人整合包」(starter)

Spring 是一個「引擎」;

Spring MVC 是基於Spring的一個 MVC 框架 ;

Spring Boot 是基於Spring4的條件註冊的一套快速開發整合包。

Spring綜述

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

TCP之Nagle演算法&&延遲ACK
使用 C 代碼實現拓撲排序

TAG:程序員小新人學習 |