Spring核心技術原理-(3)-Spring歷史版本變遷和如今的生態帝國
前幾篇:
前兩篇從Web開發史的角度介紹了我們在開發的時候遇到的一個個坑,然後一步步衍生出Spring Ioc和Spring AOP的概念雛形。Spring從2004年第一個正式版1.0 Final Released發展至今,儼然已經成為了一個生態帝國(開局只有一把槍,裝備全靠打!),目前也已經迭代到5.0,擁有諸多的子專案,基本可以解決絕大多數場景的應用!
而在進一步學習Spring的核心原理之前,有必要和大家一起梳理一下Spring歷史版本的變遷,知曉一下每一個版本新增了哪些東西,解決了哪些我們開發中的問題,以便我們更清楚的理解這個生態帝國是如何一步一發展壯大的!
一、Spring歷史版本變遷
1、Spring 1.x
大概在2004年3月24日這一天,Spring Framework 1.0 final正式出現在我們的視野中,原始碼專案結構如下:
引用依賴如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.0</version>
</dependency>
Spring 1.0當時只包含一個完整的專案,他把所有的功能都集中在一個專案中,其中包含了核心的Ioc、AOP,同時也包含了其他的諸多功能,例如:JDBC、Mail、ORM、事務、定時任務、Spring MVC等。
由於Spring超前的眼光和博大的精神,在第一個版本的時候已經支援了很多第三方的框架,例如:Hibernate、ibatis、模板引擎等。
儘管如此,此時的Spring除了最核心的Ioc和AOP之外,其他的模組猶如我們現在眾多的開源專案一樣,大多是對第三方框架的簡單封裝!我也相信很多個人或企業也基本都維護了一套類似這種的框架供專案開發使用。
此時的Spring還很懵懂,只支援基於XML的配置!關於更多關於Spring 1.0 的資訊可以參考:
2、Spring 2.x
Spring 2.x的原始碼專案結構如下:
引用依賴如下:
<dependency>
<groupId >org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0</version>
</dependency>
通過上圖中和1.0版本的對比,我們首先可以很直觀的感受到Spring做了哪些改變。
Spring 2.x增加對註解的支援,支援了基於註解的配置。
3、Spring 3.x
Spring 3.x支援了基於Java類的配置。
4、Spring 4.x
(1)Spring 4.x新特性:
Spring 4.x全面支援Java 8.0,支援Lambda表示式的使用,提供了對@Scheduled和@PropertySource重複註解的支援,提供了空指標終結者Optional,對核心容器進行增加:支援泛型的依賴注入、Map的依賴注入、Lazy延遲依賴的注入、List注入、Condition條件註解注入、對CGLib動態代理類進行了增強。
Spring 4.x還支援了基於Groovy DSL的配置,提高Bean配置的靈活性。
Spring 4.x開始,Spring MVC基於Servlet 3.0 開發,並且為了方便Restful開發,引入了新的RestController註解器註解,同時還增加了一個AsyncRestTemplate支援Rest客戶端的非同步無阻塞請求。
(2)簡單的思維導圖如下:
5、Spring 5.x
Spring 5.x主要新特性:
6、小結
Spring 1.x、Spring 2.x、Spring 3.x由於版本比較久,而我從開始就是從Spring 4.0 開始用的,所以更多關於以前版本的資訊這裡解釋的不是很全,上述的原始碼截圖只是作為一種直觀地感受,希望能感受到Spring版本的變遷過程。
二、Spring如今的生態帝國
Spring從最初的一城一池,發展到如今已經發展為一個生態帝國,旗下擁有諸多的子專案,從最基本的Spring Ioc/AOP使用,到安全管理,再到大資料,Spring已經逐漸的滲入到各個領域,目前,幾乎所有JavaWeb相關的開發都可以在Spring中找到合適的方案,為了在開發的時候,防止重造輪子,下邊梳理一下Spring的各個子專案,做到心中有數:
參考文章:
1、《精通Spring 4.x企業應用開發實戰》