Spring 能夠輕鬆建立 Java 企業級應用程序。它提供了在企業級應用中使用 Java 語言所需的一切,包括使用 Groovy 和 Kotlin 做爲 JVM 上的替代語言,並可根據應用程序的須要靈活地建立多種體系結構。從 Spring Framework 5.0 開始,Spring 須要 JDK 8+(Java SE 8+),而且已經爲 JDK 11 提供了開箱即用的支持。java
Spring 支持的應用場景很是普遍。在大型企業環境中,應用程序一般會運行很長時間,而且須要在官方再也不支持的老版本 JDK 和應用程序服務器上運行。也可能做爲單個 jar 包運行在嵌入型服務器中,也有可能在雲環境中運行,還有一些多是不須要服務器的獨立應用程序(例如批處理或集成工做負載)。git
Spring 是開源的。它擁有一個龐大而活躍的社區,社區會根據各類各樣的實際使用狀況提供持續的反饋,這有助於 Spring 在很長一段時間內的良好發展。github
「Spring」在不一樣的語境下意味着不一樣的東西。它能夠用來代指 Spring Framework 自己,這是 Spring 家族的基礎。隨着時間的推移,其餘 Spring 項目已經構建在 Spring Framework 之上。大多數狀況下,當人們說「Spring」時,他們指的是整個項目家族。本參考文檔側重於基礎:Spring Framework 自己。spring
Spring 框架分爲幾個模塊。應用程序能夠選擇所需的模塊。最核心的是包括配置模型和依賴注入機制的核心容器模塊。除此以外,Spring Framework 還爲不一樣的應用程序體系結構提供了基礎支持,包括消息機制,數據的事務和持久化以及 Web。它還包括基於 Servlet 的 Spring MVC Web 框架,以及響應式 Web 框架 Spring WebFlux。編程
關於模塊的說明:Spring 的框架 jar 包容許部署到 JDK 9 的模塊路徑中(「Jigsaw」)。爲了在支持 Jigsaw 的應用程序中使用,Spring Framework 5 的 jar 包帶有「Automatic-Module-Name」條目清單,它們定義了獨立於 jar 包的固定語言級模塊名稱,例如「spring.core」,「spring.context」等。(jar 包使用相同的命名模式,使用「-」代替「.」,例如「spring-core」和「spring-context」)。固然,Spring 框架 jar 包在 JDK 8 和 9 上都能正常工做。服務器
Spring 成立於 2003 年,是對早期 J2EE 規範的複雜性作出的響應。雖然有些人認爲 Java EE 和 Spring 是競爭關係,但 Spring 實際上與 Java EE 互補。Spring 編程模型不包含 Java EE 平臺規範,但它集成了 Java EE 體系中精心挑選的幾個規範:架構
Spring Framework 還支持依賴注入(JSR330)和公共註解(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 和 九、WebSphere 9 以及 JBoss EAP 7 徹底兼容。框架
隨着時間的推移,Java EE 在應用程序開發中的角色也在不斷演變。在 Java EE 和 Spring 的早期,應用程序開發後都是部署到應用程序服務器。今天,在 Spring Boot 的幫助下,應用程序以 devops 以及雲計算友好的方式建立,Servlet 容器嵌入到程序內部,而且變得沒那麼重要了。從 Spring Framework 5 開始,WebFlux 應用程序能夠不直接使用 Servlet API,而且能夠在不是 Servlet 容器的服務器上運行,例如 Netty。ide
Spring 持續創新並不斷髮展。除了 Spring Framework 以外,還有其餘項目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。重要的是,要記住每一個項目都有本身的源代碼存儲庫、問題跟蹤器和發佈節奏。有關 Spring 項目的完整列表,請參見 spring.io/projects。
當你瞭解框架時,重要的是不只要知道它的做用,還要了解它遵循的原則。如下是 Spring Framework 的指導原則:
對於如何提問、診斷或調試問題,咱們建議使用 StackOverflow,咱們有一個問題頁面列出了建議使用的標籤。若是您很是肯定 Spring Framework 中存在問題或想要在功能上給出建議,請使用JIRA問題跟蹤器。
若是您有解決思路或建議的修復方法,您能夠在 Github 上提交拉取請求 。可是請記住,除了很小的問題之外,咱們但願你在問題跟蹤器中提交一條記錄,在那裏進行討論並留下記錄以供未來參考。
更多詳細信息,請參閱項目根目錄中「貢獻」頁面上的指南。
若是你剛剛開始使用 Spring,你可能但願經過建立基於 Spring Boot 的應用程序來開始使用 Spring Framework 。Spring Boot 提供了一種快速且固定的方式來建立一個可用於生產環境的基於 Spring 的應用程序。它基於 Spring Framework,傾向於約定優於配置,旨在幫助您儘快啓動和運行。
您可使用 start.spring.io 生成基本項目,也能夠按照入門指南進行操做,例如構建 RESTful Web 服務入門。這些指南很是容易理解且目標明確,大多數都基於 Spring Boot。它們還涵蓋了 Spring 家族中在解決特定問題時可能須要考慮的其餘項目。