淺談Spring框架

HOWD發表於2018-10-12

Spring框架概述

Spring可以輕鬆建立Java企業應用程式。它提供了在企業環境中使用Java語言所需的一切,支援Groovy和Kotlin作為JVM上的替代語言,並可根據應用程式的需要靈活地建立多種體系結構。從Spring Framework 5.0開始,Spring需要JDK 8+(Java SE 8+),並且已經為JDK 9提供了開箱即用的支援。

Spring支援範圍廣泛的應用場景。在大型企業中,應用程式通常存在很長時間,並且必須在JDK和應用伺服器上執行,而這些伺服器的升級週期超出了開發人員的控制範圍。其他的可能以嵌入伺服器的單一jar的形式執行,可能是在雲端計算中。還有其他可能是不需要伺服器的獨立應用程式(例如批處理或整合工作負載)。

Spring是開源的。它擁有一個龐大而活躍的社群,可根據各種各樣的實際用例提供持續的反饋。這有助於Spring在很長一段時間內成功地發展。

1.“Spring”是什麼意思

術語“Spring”在不同的背景下代表不同的東西。它可以用來引用Spring Framework專案本身,它就是一切開始的地方。隨著時間的推移,其他Spring專案都是在Spring Framework基礎之上搭建的。通常來說,當人們說“Spring”時,他們指的是整個Spring家族。而現在要說的是:Spring Framework本身。

Spring框架分為多個模組。應用程式可以選擇它們所需的模組。核心是core container的模組,包括配置模型和依賴注入機制。除此之外,Spring Framework還為不同的應用程式體系結構提供了基礎支援,包括訊息傳遞,事務資料和永續性以及Web。它還包括基於Servlet的Spring MVC Web framework,以及Spring WebFlux reactive Web framework。

關於模組的說明:Spring的框架jar允許部署到JDK 9的模組路徑(“Jigsaw”)。為了在支援Jigsaw的應用程式中使用,Spring Framework 5 jar帶有“Automatic-Module-Name”清單條目,它定義了獨立於jar工件的穩定語言級模組名稱(“spring.core”,“spring.context”等)名稱(罐子使用相同的命名模式,而不是“。”,例如“spring-core”和“spring-context”)。當然,Spring的框架jar在JDK 8和9上的類路徑上都能正常工作。

2. Spring的歷史和Spring框架

Spring出現於2003年,是對早期J2EE規範的複雜性的迴應。雖然有些人認為Java EE和Spring處於競爭中,但Spring實際上是對Java EE的補充。Spring程式設計模型不包含Java EE平臺規範; 相反,它整合了j2EE中精心挑選的個別規範:

Spring Framework還支援依賴注入(JSR 330)和公共註釋(JSR 250)規範,應用程式開發人員可以選擇使用這些規範而不是Spring Framework提供的Spring特定機制。

從Spring Framework 5.0開始,Spring至少需要Java EE 7級別(例如Servlet 3.1 +,JPA 2.1+) - 同時在Java EE 8級別提供與新API的開箱即用整合(例如,Servlet 4.0,JSON繫結API)在執行時遇到。這使Spring與Tomcat 8和9,WebSphere 9和JBoss EAP 7完全相容。

隨著時間的推移,Java EE在應用程式開發中的角色已經發生了變化。在Java EE和Spring的早期,建立應用程式是為了部署到應用伺服器。如今,在Spring Boot的幫助下,應用程式以友好的開發與運營和雲端計算方式建立,且Servlet容器嵌入不需要更改。在Spring Framework 5中,WebFlux應用程式甚至不直接使用Servlet API,並且可以在不是Servlet容器的伺服器(例如Netty)上執行。

Spring將繼續創新並不斷髮展。除了Spring Framework之外,還有其他專案,例如Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch等。重要的是要記住每個專案都有自己的原始碼儲存庫,問題跟蹤器和版本節奏(release cadence)。有關Spring專案的完整列表,請參見spring.io/projects。

3.設計理念

當你瞭解一個框架時,不僅要了解它所遵循的原則,還要了解它遵循的原理。以下是Spring框架的指導原則:

  • 為每個層級提供選擇。Spring允許你儘可能晚地推遲設計決策。例如,你可以通過配置切換永續性提供者,而無需更改程式碼。許多其他基礎架構問題以及與第三方API的整合也是如此。

  • 容納多種多樣的觀點。Spring支援靈活性,對於應該如何做事不剛愎自用。它以不同的角度支援廣泛的應用程式需求。

  • 保持強大的向下相容性。Spring的發展經過精心的管理,可以在版本之間進行一些重大改變。Spring支援精心挑選的JDK版本和第三方庫,以便於維護依賴於Spring的應用程式和庫。

  • 為程式碼質量設定高標準。Spring框架非常強調有意義的、最新的和準確的Javadoc。它是少數幾個能夠宣告乾淨的程式碼結構的專案之一,在包之間沒有迴圈依賴關係。

  • 為程式碼質量設定高標準。Spring Framework強調有意義,最新且準確的Javadoc。它是極少數專案之一,可以聲稱乾淨的程式碼結構,包之間沒有迴圈依賴。

注:翻譯有瑕疵,不敢在大佬面錢班門弄斧,僅供學習參考。如有錯誤之錯,還望提出,謝謝。

參考文件:spring-framework-reference

感謝你花時間讀到結尾!:D

後端一枚,默默搬磚擼程式碼,如果覺得不錯歡迎關注我的公眾號

淺談Spring框架

相關文章