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

?wxfrom=5&wx_lazy=1

引用依賴如下:

UtWdDgynLdaPKnv354IwEnswfT8aSZfoUmZFCibSJ1nznx5ibRv0lTkDjVOtpZnibEmjjM3II81ticIjaMmPTTcsZg

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的源碼項目結構如下:

UtWdDgynLdaPKnv354IwEnswfT8aSZfo53Xia5n7cqf1YFHuxGf69d3AHoVf3BZTL0hBl8yw2ic29yqic4Bm8jzug

引用依賴如下:

UtWdDgynLdaPKnv354IwEnswfT8aSZfokgAG4D82Zickm41oyoY4hnMzWquCA37WtQWuic5WoQSkia6DxxVaWYsBw

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

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

3、Spring 3.x

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

UtWdDgynLdaPKnv354IwEnswfT8aSZfoXeRXNIXhbwNILIOqao6MWAj1KXzVWk2oF3kH9ojI7NvzqJCic00pwfQ

Spring 3.x支持了基於Java類的配置。

4、Spring 4.x

UtWdDgynLdaPKnv354IwEnswfT8aSZfoHnbPPicd5hrPmG0CHNNxlQWByYeugSwse4UfSZ0aict05obibBstJKfuw

(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)簡單的思維導圖如下:

UtWdDgynLdaPKnv354IwEnswfT8aSZfoT86ZW0iccZMwibsIc5njiahA5lEAaLy63sCzoQcLEguvZpvUs8oIBj92g

5、Spring 5.x

UtWdDgynLdaPKnv354IwEnswfT8aSZforLpWR1ic6Nyruble89ibD0oXK1GVzGyAu0lf9iaZOgmQ6TzFRubAT7FFw

Spring 5.x主要新特性:

UtWdDgynLdaPKnv354IwEnswfT8aSZfoibBicSVU6j4ICgm4QHGVmMJw9aSlLwkBic1B7WAHoiawibEEarZGWGdkyeA

6、小結

Spring 1.x、Spring 2.x、Spring 3.x由於版本比較久,而我從開始就是從Spring 4.0 開始用的,所以更多關於以前版本的信息這里解釋的不是很全,上述的源碼截圖只是作為一種直觀地感受,希望能感受到Spring版本的變遷過程。

二、Spring如今的生態帝國

Spring從最初的一城一池,發展到如今已經發展為一個生態帝國,旗下擁有諸多的子項目,從最基本的Spring Ioc/AOP使用,到安全管理,再到大數據,Spring已經逐漸的滲入到各個領域。目前,幾乎所有JavaWeb相關的開發都可以在Spring中找到合適的方案,為了在開發的時候,防止重造輪子,下邊梳理一下Spring的各個子項目,做到心中有數:

UtWdDgynLdaPKnv354IwEnswfT8aSZfo0icKp7nJHfqpCtPpwN5YUo0iaW5LsE2DHHr03nEAxSHJTV0Q1jGBHQuA

參考文章:

1、《精通Spring 4.x企業應用開發實戰》

 

 


---------------------
作者:海藍steven
來源:CNBLOGS
原文:https://www.cnblogs.com/rogge7/p/10101247.html
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM