天天看點

[轉]Spring曆史版本變遷和如今的生态帝國

前兩篇:

為什麼要有Spring?

為什麼要有Spring AOP?

前兩篇從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正式出現在我們的視野中,源碼項目結構如下:

引用依賴如下:

Spring 1.0當時隻包含一個完整的項目,他把所有的功能都集中在一個項目中,其中包含了核心的Ioc、AOP,同時也包含了其他的諸多功能,例如:JDBC、Mail、ORM、事務、定時任務、Spring MVC等。

由于Spring超前的眼光和博大的精神,在第一個版本的時候已經支援了很多第三方的架構,例如:Hibernate、ibatis、模闆引擎等。

盡管如此,此時的Spring除了最核心的Ioc和AOP之外,其他的子產品猶如我們現在衆多的開源項目一樣,大多是對第三方架構的簡單封裝!我也相信很多個人或企業也基本都維護了一套類似這種的架構供項目開發使用。

此時的Spring還很懵懂,隻支援基于XML的配置!關于更多關于Spring 1.0 的資訊可以參考:

https://spring.io/blog/2004/03/24/spring-framework-1-0-final-released

2、Spring 2.x

Spring 2.x的源碼項目結構如下:

引用依賴如下:

通過上圖中和1.0版本的對比,我們首先可以很直覺的感受到Spring做了哪些改變。

Spring 2.x增加對注解的支援,支援了基于注解的配置。

3、Spring 3.x

Spring在GitHub托管的代碼,最早的版本隻能看到Spring v3.1.0.M2(https://github.com/spring-projects/spring-framework),源碼結構如下:

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企業應用開發實戰》

---------------------

作者:海藍steven

來源:CNBLOGS

原文:https://www.cnblogs.com/rogge7/p/10101247.html

版權聲明:本文為作者原創文章,轉載請附上博文連結!

内容解析By:CSDN,CNBLOG部落格文章一鍵轉載插件