1. 程式人生 > >Spring揭祕-Spring框架的由來

Spring揭祕-Spring框架的由來

【版權申明】未經博主同意,謝絕轉載!(請尊重原創,博主保留追究權)
https://blog.csdn.net/qq_36000403/article/details/83153427
出自【zzf__的部落格】

前言:

非常喜歡這句話, 知其表而不知其裡,充其量你只能算一個畫匠,而不是畫師;相信你來到這裡,就是和我一樣,想要一探究竟Spring框架為什麼如此強大,又為什麼它的出現會受到如此多人的喜愛,它到底解決了什麼問題等等。這是我的第一篇文章,也是講解Spring框架的第一篇文章,廢話少說,從現在開始,我將和大家一起揭開Spring的面紗,同時也歡迎大家能夠指出我的不足,喜歡我的文章的朋友幫忙點選關注並轉發,讓更多人能夠共同學習,謝謝!!!

背景(這裡只作簡單介紹,對那個時代並不瞭解):

在Spring還沒問世的時代,那個時候Java EE 系統框架臃腫、低效、脫離現實,這時Rod Johnson看不下去了,在2002年編著的《Expert one on one J2EE design and development》一書中,同年在他又推出了一部堪稱經典的力作《Expert one-on-one J2EE Development without EJB》,對EJB的各種笨重臃腫的結構進行了逐一的分析和否定,並分別以簡潔實用的方式替換之。

Spring是於2003年興起的一個輕量級Java開發框架,它就是由《Expert one on one J2EE design and development》中闡述的部分理念和原型衍生而來的。

傳統J2EE應用的開發效率低,應用伺服器廠商對各種技術的支援並沒有真正統一,導致J2EE的應用沒有真正實現Write Once及Run Anywhere的承諾。Spring作為開源的中介軟體,獨立於各種應用伺服器,甚至無須應用伺服器的支援,也能提供應用伺服器的功能,如宣告式事務、事務處理等。

Spring致力於J2EE應用的各層的解決方案,而不是僅僅專注於某一層的方案。可以說Spring是企業應用開發的“一站式”選擇,並貫穿表現層、業務層及持久層。然而,Spring並不想取代那些已有的框架,而是與它們無縫地整合。

Spring框架的本質:

Spring框架自發布到現在不管它經過多少次版本更迭,其本質是始終不變的,都是為了提供各種服務, 被設計出來的目的就是為了簡化JavaEE的企業級應用開發。

但Spring又是如何簡化java開發的呢?
可以總結以下四點(對第一點作詳細講解,其它在以後文章會涉及到):

  1. 基於POJO的輕量級和最小侵入性程式設計

    • 很多框架通過強迫應用繼承它們的類或實現它們的介面從而導致應用與框架綁死,早期的EJB是一個很容易想到的例子,不過這種侵入式的程式設計方式在早期版本的Struts
      WebWork Tapestry以及無數其他的Java規範和框架中都能看到
    • Spring則竭力避免因自身的API而弄亂你的程式碼。它不會強迫你實現Spring規範的介面或繼承Spring規範的類,相反,在基於Spring構建的應用中,它的類通常沒有任何痕跡表明你使用了Spring。最壞的場景是,一個類或許會使用Spring註解,但它依舊是POJO。Spring的非侵入式程式設計模型意味著這個類在Spring應用和非Spring應用中都可以發揮同樣的作用
  2. 通過依賴注入和麵向介面實現鬆耦合

  3. 基於切面和慣例進行宣告式程式設計

    • 允許你把遍佈應用各處的功能分離出來形成可重用的元件
  4. 通過切面和模板減少樣式程式碼

    • 過多的因為使用JavaAPI而導致的樣板式程式碼,一個常見範例是使用JDBC訪問資料庫查詢資料,可以通過切面和模板減少樣式程式碼

接下來我們看下圖:

在這裡插入圖片描述

從上圖中可以看出,整個Spring框架構建在Core核心模組之上,它是整個框架的基礎。在該模組中,Spring為我們提供了一個IoC容器實現,用於幫助我們以依賴注入的方式管理物件之間的依賴關係,也可以說是管理著Spring應用中bean的建立 配置和管理。

就像一棵樹必須依賴強大的根基才能生長繁盛一樣,Spring框架內的各個模組也是如此,理論上來說,上層的模組需要依賴下層的模組才能正常,這就是為什麼說這些模組是 相互依賴的,比如Spring的事務管理抽象層就是直接構建在Spring AOP的基礎之上。不過,近乎處於同一水平線的各個模組之間卻可以認為是 相互獨立的,彼此之間沒什麼瓜葛。從這個角度看,這些模組之間的相互獨立一說也是成立的。

所有的Spring家族成員全部構建於Spring框架基礎之上。在我們想要往Spring這棵參天大樹更高的地方攀爬之前。實實在在地先去了解Spring框架這一根基。

ok~,本篇到此結束,上述內容基於參考資料和個人的理解,如有誤處,請留言謝謝。