1 碼農的春天----------Spring來了spring
Spring官網 :http://www.springframework.org數據庫
關於Spring的發展起源要回溯到2002年,當時正是Java EE和EJB大行其道的時候,不少知名公司都是採用此技術方案進行項目開發。這時候有一個美國的小夥子認爲 EJB 太過臃腫,並非全部的項目都須要使用 EJB 這種大型框架,應該會有一種更好的方案來解決這個問題。編程
他爲了證實本身的想法是正確的,在2001年10月寫了一本書《Expert One-on-One J2EE》,介紹了當時Java企業應用程序開發的狀況,並指出了 Java EE 和 EJB 組件框架中存在的一些主要缺陷。在這本書中,他提出了一個基於普通 Java 類和依賴注入的更簡單的解決方案。在書中,他展現瞭如何在不使用 EJB 的狀況下構建高質量、可擴展的在線座位預留系統。爲了構建應用程序,他編寫了超過 30,000 行的基礎結構代碼,項目中的根包命名爲 com.interface21
,因此人們最初稱這套開源框架爲 interface21,這就是 Spring 的前身。緩存
這個小夥子是誰呢?他就是大名鼎鼎的 Rod Johnson(下圖),Rod Johnson 在悉尼大學不只得到了計算機學位,同時還得到了音樂學位,更使人吃驚的是在回到軟件開發領域以前,他還得到了音樂學的博士學位,反正就是牛逼哄哄的人物。可是如今 Rod Johnson 已經離開了 Spring(2012 年 Rod Johnson 宣佈他將要離開 Spring Source ),成爲了一個天使投資人,同時也是多個公司的董事,早已走上人生巔峯。服務器
在這本書發佈後,一對一的 J2EE 設計和開發一炮而紅。這本書免費提供的大部分基礎架構代碼都是高度可重用的。2003 年 Rod Johnson 和同伴在此框架的基礎上開發了一個全新的框架命名爲 Spring,據 Rod Johnson 介紹 Spring 是傳統 J2EE 新的開始,隨後 Spring 發展進入快車道。網絡
2004 年 03 月,1.0 版發佈。架構
2006 年 10 月,2.0 版發佈。app
2007 年 11 月,改名爲 SpringSource,同時發佈了 Spring 2.5。框架
2009 年 12 月,Spring 3.0 發佈。運維
2013 年 12 月,Pivotal 宣佈發佈 Spring 框架 4.0。
2017 年 09 月,Spring 5.0 發佈。
或許想解釋清楚 Spring 究竟是什麼是件很困難的事情。一般, Spring 是指一個用於構造 JAVA 應用程序的輕量級框架,但這句話包含兩個有趣的地方。首先,你能夠採用 Spring 來構造任何程序,這一 Apache Struts這樣的框架不一樣,你不限定於只編寫 WEB 應用。其次,以上解釋中的「輕量級」並不意味着類數量不多,或者發行包大小很小,實際上,它指的是 Spring 哲學原理的總稱——那就是最少的侵入。 Spring 是輕量級的,意味着你只需對你的程序代碼作不多改動 ( 倘若有的話 ) ,而得到 Spring 核心帶來的好處,你也能夠在任什麼時候候選擇拋棄 Spring ,你會發現這實在很容易。注意,上面這句話只針對 Spring 核心自己——不少附加的 Spring 組件,好比數據訪問,須要與 Spring 框架有相對緊密得多的耦合關係。可是,這些耦合帶來的好處顯而易見。
Spring 是一個開源框架,是爲了解決企業應用程序開發複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許您選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。
3 What is 最少的侵入?
這裏解釋一下Spring中的侵入式和非侵入式。簡單的說,假設咱們想把一些業務代碼放到一個框架裏。侵入式的作法是要求業務代碼」知道」框架的代碼,表現爲業務代碼須要繼承框架提供的類,才能很好的和框架結合,使用框架帶來的便利。非侵入式則不須要業務代碼引入框架代碼的信息,即無需繼承框架提供的類,從編寫者的角度來看,察覺不到框架的存在。例如:使用struts的時候,咱們須要繼承一些struts的類,這時struts侵入到了個人業務代碼裏。使用spring編寫一些業務類的時候不須要繼承spring特定的類,經過配置完成依賴注入後就可使用,此時,spring就沒有侵入到個人代碼裏。侵入式讓業務代碼產生對框架的依賴,這些代碼不能再框架外使用,不利於代碼的複用。可是侵入式可使用戶和框架更好的結合,更容易更充分的利用框架提供的功能。非侵入式的代碼對框架則沒有過多的依賴,能夠很方便的遷移到其餘地方使用,代碼的複用性較好。可是框架和業務代碼互動的方式可能就比較複雜。總之,這兩種方式各有千秋,各有利弊,主要看實際開發時的權衡選擇了。
那麼非侵入式的技術體現,即容許在應用系統中自由選擇和組裝Spring框架的各個功能模塊,而且不強制要求應用系統的類必須繼承或實現Spring框架的類和接口來達到使用框架的目的。
如何實現非侵入式:
1.引用反射機制,經過動態調用的方式來提供各方面的功能,創建核心組件BeanFactory
2.配合使用Spring框架中的BeanWrapper和BeanFactory組件類最終達到對象的實例建立和屬性注入
其實,非侵入式就是不須要繼承框架提供的類,而是經過配置完成依賴注入後,就可使用。容許所開發出來的應用系統可以在不一樣的環境中自由移植,不須要修改應用系統中的核心代碼。
4 Spring的體系結構
Spring是一個分層框架,由七個定義良好的模塊組成。Spring模塊構建在覈心容器之上,核心容器定義了建立,配置,管理bean的方式。
框架圖:
(1)核心容器
核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory ,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開 ( 工廠方法 ) 。
(2)Spring上下文
Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企業服務,例如JNDI 、 EJB 、電子郵件、國際化、校驗和調度功能。
(3)Spring AOP
經過配置管理特性, Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP 。 Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。經過使用 Spring AOP ,不用依賴 EJB 組件,就能夠將聲明性事務管理集成到應用程序中。
(4)Spring DAo
JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不一樣數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,而且極大地下降了須要編寫的異常代碼數量(例如打開和關閉鏈接)。 Spring DAO 的面向 JDBC 的異常聽從通用的 DAO 異常層次結構。
(5)Spring ORM
Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map 。全部這些都聽從 Spring 的通用事務和 DAO 異常層次結構。
(6)Spring Web模塊
Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。因此, Spring 框架支持與 Jakarta Struts 的集成。 Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。
(7) Spring MVC框架
MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。經過策略接口, MVC 框架變成爲高度可配置的, MVC 容納了大量視圖技術,其中包括 JSP 、 Velocity 、 Tiles 、 iText 和 POI 。
5 Spring和那些巨頭公司之間的愛恨情仇
內容好像有點偏了啊,咱們今天只談女人,不談國事,不不不,是隻談歷史,不談技術。
說到Spring,那就不得不說那個哄哄牛逼的Pivotal 公司,記住了,這是一個」富二代」。首先簡單介紹一下 Pivotal 公司:
Pivotal 成立於2013年4月,致力於「改變世界構造軟件的方式(We are transforming how the world builds software)」,提供雲原生應用開發 PaaS 平臺及服務,幫助企業客戶採用敏捷軟件開發方法論,從而提升軟件開發人員工做效率、減小運維成本,實現數字化轉型、IT 創新,並最終實現業務創新。
截至目前,財富 100 強中超過三分之一的企業使用 Pivotal 雲原平生臺。Pivotal 部分大型客戶在採用 Pivotal 產品後,開發人員與運營人員比例可提升到 200:1,開發人員專一於編寫軟件代碼時間增加了 50%。
看了簡介你們可能會有點犯迷糊,這不是一個 2013 年成立的 IT 服務公司嗎,和 2002 年發展起來的 Spring 又是怎麼扯上關係的呢?其實呀,要提及 Pivotal 公司的起源要追溯到 1989 年的 Pivotal Labs 實驗室。
Pivotal Labs 公司
1989 年,Rob Mee 創立的諮詢公司 Pivotal Labs,專一於快速的互聯網式軟件開發,即敏捷編程。創立 Pivotal Labs 的時候,它仍是一家很是小的軟件顧問公司,它的主營業務就是與客戶合做,幫助客戶開發軟件。
Pivotal Labs 一直是敏捷開發領域的領導者,爲部分硅谷最有影響力的公司塑造了軟件開發文化,並樹立了良好口碑,其中 Google、Twitter 都曾是 Pivotal Labs 客戶。
時間很快到了 2012 年,深受客戶喜好的 Pivotal 終於引發了商用軟件巨頭 EMC 的關注,EMC 在 2012 年以現金方式收購了 Pivotal 並照單全收了它的 200 名員工。
剛開始的時候,公司並無發生太大的變化,只是做爲新部門成爲了 EMC 的一部分,Pivotal Labs 仍然繼續像之前樣與客戶合做。
可是到 2013 年的時候,EMC 忽然扔下了一顆重磅炸彈。它將 Pivotal Labs 的核心業務分拆出去,成立了一家名爲 Pivotal Software 的新公司。這家新公司的股東是 EMC 、 VMware 和通用電氣,以前在 EMC 子公司 VMware 擔任首席執行官的馬瑞茲出任公司的首席執行官。
EMC 和 VMware 分拆出其 Cloud Foundry、Pivotal Labs、Greenplum 等雲計算、大數據資源,GE 投資 1.05 億美圓,成立新公司 Pivotal。新生的 Pivotal 是名副其實的「富二代」,這輪估值高達 10.5 億美圓。
那麼EMC和VMware又有什麼關聯呢?
2003 年 12 月, EMC 公司宣佈以 6.35 億美圓收購了 VMware 公司。
EMC 於 1979 年成立於美國麻州 Hopkinton 市,1989 年開始進入企業數據儲存市場。二十多年來,EMC 全心投注在各項新的儲存技術,已得到了 1,300 個已經過或審覈中的儲存技術專利。不管是全球外接 RAID 儲存系統、網絡儲存亦或是儲存管理軟件等儲存專業領域,EMC 均是業界公認的領導廠商。
EMC 是全球第六大企業軟件公司,全球信息基礎架構技術與解決方案的領先開發商與提供商。同時也是美國財富五百強之一,在全世界擁有超過四萬二千名員工,在全球 60 個國家或地區擁有分支機構。咱們接觸比較多就是 EMC 的各類存儲產品。
EMC 公司作大 EMC 的祕訣,就是研發與併購雙輪驅動,研發與併購的投入佔當年營業收入的 22% 左右,併購投入略高於研發。從 2003 年到2 015 年的 12 年間,EMC 總共投入超過 420 億美圓用於研發和收購。其中,206 億美圓用於研發,213 億美圓用於併購,總共併購了 100 多家公司。
Vmware 收購Spring
2009 年是 Spring 企業的一個轉折點,VMware 以 4.2 億美圓收購 Spring Source (3.6億現金外加5800萬股份) 。
2012 年 Rod Johnson 宣佈他將要離開 Spring Source 。
EMC 又被收購
2015 年的時候,曾經被大量報道 EMC 考慮被子公司 VMware 收購,讓人大跌眼鏡,居然能夠有這樣的騷動做,這是爲何呢?
EMC 在 2003 年斥資 6.25 億美圓收購了 VMware,四年以後,EMC 選擇讓 VMware 分拆上市,結果獨立上市的 VMware 發展愈來愈好,反觀 EMC 的各項業務持續陷入低潮。到 2015 年的時候,VMware 的市值已達到約 370 億美圓,佔據了 EMC 總市值的近 75%。
可能各方利益不能達成一致,最終 EMC 卻被戴爾(dell)收購。
2015 年 10 月 12 日,戴爾(Dell)和EMC(易安信)公司宣佈簽署最終協議,戴爾公司與其創始人、主席和首席執行官麥克爾•戴爾,與 MSD Partner 以及銀湖資本一塊兒,收購 EMC 公司,交易總額達 670億 美圓,成爲科技史上最大併購。
當時業界最關心的雲計算軟件商 VMware 仍然保持獨立上市公司的身份。據悉,EMC 當前持有 VMware 大約 80% 的股權,市值約爲 320 億美圓。而戴爾收購 EMC 其實是項莊舞劍,VMware 纔是戴爾收購 EMC 的關鍵。
併購事件表
上面寫的有點亂,你們看完以後也許有點迷糊,在這裏從新整理一下這裏面幾個關鍵公司的收購時間點:
1989 年,Rob Mee 創立的諮詢公司 Pivotal Labs;
2003 年,Rod Johnson 和同伴建立了 Spring;
2003 年,EMC 收購了 VMware 公司;
2009 年,VMware 收購了 Spring ;
2012 年,EMC 又收購了 Pivotal Labs 公司;
2013 年,EMC 、 VMware 和收購來的 Pivotal Labs 公司從新組建了新的公司 Pivotal;
2015 年,戴爾又併購了 EMC;
2018 年,戴爾獨立上市
接着說Pivatal公司
上面一系列的商業併購搞的眼花繚亂的,可是你們只要知道 Pivotal 公司出身高貴,來自幾個都不太差錢的世界 500 強公司聯合組建而成,Pivotal 公司的產品很是的高大上,就連咱們平時使用的 12306 都使用了他們公司的產品。
Pivotal 公司可謂是大牛雲集,公司的開源產品有:Spring 以及 Spring 衍生產品、Web 服務器 Tomcat、緩存中間件 Redis、消息中間件 RabbitMQ、平臺即服務的 Cloud Foundry、Greenplum 數據引擎、還有大名鼎鼎的 GemFire(12306 系統解決方案組件之一)。
這些著名開源產品背後的開發者都在 Pivotal 公司,其研發團隊聚集了全球的一流開發者,Spring Boot 爲何如此優秀,或許在這裏能夠找到一些答案。
Pivotal 中國研發中心在中國建立於 2010 年,它的前身是 EMC Greenplum 部門,其團隊成員分佈在北京和上海兩地,目前正致力於如下產品的研發和服務的提供:Pivotal Web Service (PWS), Pivotal Hadoop (PHD), Hawq 和 Greenplum Database (GPDB)。
畢威拓科技(北京)有限公司(Pivotal中國公司)2015年3月1日正式成立並單獨運營。
Pivotal 公司成立以後,於 2014 年發佈了 Spring Boot,2015 年發佈了 Spring Cloud,2018 年 Pivotal 公司在紐約上市。