版本:5.1.11.BUILD-SNAPSHOTgit
Spring簡化了Java企業級應用程序的建立。它提供了Java語言在企業級環境中須要的一切,它支持Groovy和Kotlin,且支持多種結構的應用程序。從Spring框架5.1.x版本開始,Spring須要JDK 8+(Java SE 8+),而且它支持JDK 11 LTS。github
Spring支持很是多的應用場景。在大型企業中,大部分的應用程序長期運行在升級週期不受開發人員控制的JDK和應用程序服務器上。有些應用程序經過將jar包丟給雲服務器的方式運行。還有一些應用程序運行時不須要服務器(例如:批處理程序等)。spring
Spring是開源。它的社區很活躍,能夠獲得許多實際用例的反饋。這一點有助於Spring長期穩定的發展。數據庫
Spring是什麼意思?
「Spring」這個單詞在不一樣的語境上下文中表達的含義不一樣。它能夠用來指代Spring框架項目自己(Spring開始的地方。隨着時間流逝,逐漸產生了許多基於Spring的項。一般,如今人們提及「Spring」時,它們說的是Spring以及基於Spring而產生的一系列項目。然而,本參考文檔重點關注基礎:Spring框架自己。編程
Spring框架分爲多個模塊。應用程序能夠按需選擇。最核心的是核心容器模塊,它包括了配置模型和依賴注入機制。除此之外,Spring框架還爲不一樣的應用程序體系結構提供了基礎支持,好比消息傳遞、數據庫事務、網絡編程等。Spring框架還包括了基於Servlet的Spring MVC反應式的Spring WebFlux框架。服務器
這裏是一些關於模塊的注意點:Spring框架的jar能夠部署到JDK9 的模塊路徑(jigsaw)。爲了可以在支持jigsaw的應用程序中使用,Spring 5 附帶了自動命名的清單條目,這些清單條目定義了穩定的語言級別的模塊名稱(spring.core、spring.context等),這些名稱區別於jar工程的名稱(jar使「-」區分而不是使用「.」區分,例如:spring-core、spring-context等)。固然,Spring框架的jar包在JDK 8 和 9 +上都能良好運行。網絡
Spring以及Spring框架的歷史
因爲早期的J2EE規範比較複雜,因此誕生Spring框架。儘管有些人認爲Java EE和Spring是競爭關係,但實際上Spring是Java EE的輔助。Spring編程模型不徹底包含Java EE,它精心挑選了一些規範與其集成在一塊兒:架構
- Servlet API (JSR 340)
- WebSocket API (JSR 356)
- Concurrency Utilities (JSR 236)
- JSON Binding API (JSR 367)
- Bean Validation (JSR 303)
- JPA (JSR 338)
- JMS (JSR 914)
- 用於事務協做的JTA/JCA設置。
Spring框架還支持依賴注入(JSR 330)和通用註釋(JSR 250)規範 ,應用程序開發人員能夠選擇使用這些規範來代替Spring提供的特殊機制。框架
從5.0版本開始,Spring框架至少須要Java EE 7級別的支持(例如:Servlet 3.1 + , JPA 2.1 +),同時,Spring還提供了與Java EE 8 級別的新的API的。若是運行時遇到Servlet 4.0 、JSON綁定的API等,也沒有問題。這樣的話,Spring與Tomcat 8 和 9 、 WebSphere 9 以及 JBoss EAP 7 就徹底兼容了。ide
隨着時間的推移,Java EE在應用程序開發中的角色已經發生了轉變。早期,建立一個應用程序,而後部署到應用程序容器上。如今,藉助SpringBoot,能夠經過Devops和雲原生的方式建立應用程序。從Spring 5開始,WebFlux應用甚至不直接使用Servlet API。而且能夠在非Servlet容器(例如:Netty)上運行。
Spring依然在持續不斷地創新和發展。除了Spring框架,許多其餘項目也應運而生,例如:Spring Boot 、Spring Security 、Spring Data、SpringCloud、Spring Batch等。須要注意的是,這些項目有他們本身的源代碼存儲庫以及問題追蹤和版本發佈節奏等。有關Spring項目的完整列表,請參見:spring.io/projects 。
設計原理
當你學習框架的時候,不只僅須要知其然,更要知其因此然。下面是Spring框架的指導原則:
- 在每一個級別都提供選擇。例如,您能夠在不更改代碼的狀況下,經過配置切換持久層提供者。對於許多其餘基礎架構問題以及與第三方API的集成也是如此。
- 容納不一樣的觀點。Spring很是靈活,而且它不要求應用程序應該怎們作。它經過不一樣的視角來支持多種應用程序。
- 保持強大的兼容性。Spring對版本進行了精心的管理,這樣,在版本迭代時,破壞性更改被極大地下降。Spring對JDK的版本和第三方庫也進行了精挑細選,這樣,維護應用程序和庫也變得更加方便。
- 關注API設計。Spring團隊花費了大量的時間和精力來設計直觀的、可以經歷時間考驗的API。
- 高質量的代碼。Spring框架強調有意義、及時更新、準確的JavaDoc。它是極少數能夠聲明本身的代碼結構清晰且程序之間沒有循環依賴的項目之一。
反饋和貢獻
譯者注:本段沒啥特別的,採用機譯。
對於操做方法問題或診斷或調試問題,咱們建議使用StackOverflow,而且有一個問題頁面列出了要使用的建議標籤。若是確切地認爲Spring框架中有問題或想提出功能,請使用GitHub Issues。
若是您有解決方案或建議的解決方案,能夠在Github上提交拉取請求 。可是,請記住,對於除最瑣碎的問題之外的全部問題,咱們但願在問題跟蹤器中記錄故障單,在該跟蹤器中進行討論並保留記錄以備未來參考。
有關更多詳細信息,請參見CONTRIBUTING頂級項目頁面上的準則 。
入門
譯者注:本段也沒啥可看的,採用機譯。
若是您剛剛開始使用Spring,則可能須要經過建立基於Spring Boot的應用程序來開始使用Spring Framework 。Spring Boot提供了一種快速(且自覺得是)的方式來建立可用於生產環境的基於Spring的應用程序。它基於Spring框架,更傾向於約定而不是配置,而且旨在使您儘快啓動並運行。
您可使用start.spring.io生成一個基本項目,或遵循「入門」指南之一,例如「 入門RESTful Web Service的構建」。這些指南不只易於理解,並且很是注重任務,而且大多數基於Spring Boot。它們還涵蓋了Spring產品組合中的其餘項目,您在解決特定問題時可能要考慮這些項目。