Spring歷史版本變遷和現在的生態帝國
前兩篇:html
爲何要有Spring?git
爲何要有Spring AOP?github
前兩篇從Web開發史的角度介紹了咱們在開發的時候遇到的一個個坑,而後一步步衍生出Spring Ioc和Spring AOP的概念雛形。Spring從2004年第一個正式版1.0 Final Released發展至今,儼然已經成爲了一個生態帝國(開局只有一把槍,裝備全靠打!),目前也已經迭代到5.0,擁有諸多的子項目,基本能夠解決絕大多數場景的應用!spring
而在進一步學習Spring的核心原理以前,有必要和你們一塊兒梳理一下Spring歷史版本的變遷,知曉一下每個版本新增了哪些東西,解決了哪些咱們開發中的問題,以便咱們更清楚的理解這個生態帝國是如何一步一發展壯大的!安全
1、Spring歷史版本變遷
一、Spring 1.x框架
大概在2004年3月24日這一天,Spring Framework 1.0 final正式出如今咱們的視野中,源碼項目結構以下:異步
引用依賴以下:post
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
二、Spring 2.x
Spring 2.x的源碼項目結構以下:
引用依賴以下:
經過上圖中和1.0版本的對比,咱們首先能夠很直觀的感覺到Spring作了哪些改變。
Spring 2.x增長對註解的支持,支持了基於註解的配置。
三、Spring 3.x
Spring在GitHub託管的代碼,最先的版本只能看到Spring v3.1.0.M2(https://github.com/spring-projects/spring-framework),源碼結構以下:
Spring 3.x支持了基於Java類的配置。
四、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)簡單的思惟導圖以下:
五、Spring 5.x
Spring 5.x主要新特性:
六、小結
Spring 1.x、Spring 2.x、Spring 3.x因爲版本比較久,而我從開始就是從Spring 4.0 開始用的,因此更多關於之前版本的信息這裏解釋的不是很全,上述的源碼截圖只是做爲一種直觀地感覺,但願能感覺到Spring版本的變遷過程。
2、Spring現在的生態帝國
Spring從最初的一城一池,發展到現在已經發展爲一個生態帝國,旗下擁有諸多的子項目,從最基本的Spring Ioc/AOP使用,到安全管理,再到大數據,Spring已經逐漸的滲入到各個領域。目前,幾乎全部JavaWeb相關的開發均可以在Spring中找到合適的方案,爲了在開發的時候,防止重造輪子,下邊梳理一下Spring的各個子項目,作到心中有數:
參考文章:
一、《精通Spring 4.x企業應用開發實戰》