Spring能夠輕鬆建立Java企業應用程序。它提供了在企業環境中使用Java語言所需的一切,支持Groovy和Kotlin做爲JVM上的替代語言,並可根據應用程序的須要靈活地建立多種體系結構。從Spring Framework 5.1開始,Spring須要JDK 8+(Java SE 8+),併爲JDK 11 LTS提供開箱即用的支持。java
Spring支持普遍的應用場景。在大型企業中,應用程序一般存在很長時間,而且必須在升級週期超出開發人員控制範圍的JDK和應用程序服務器上運行。其餘人可能在嵌入服務器的狀況下做爲單個jar運行,可能在雲環境中運行。還有一些多是不須要服務器的獨立應用程序(例如批處理或集成工做負載)。spring
Spring是開源的。它擁有一個龐大而活躍的社區,可根據各類各樣的實際用例提供持續的反饋。這有助於Spring在很長一段時間內成功發展。編程
1.什麼是spring
spring在不一樣的背景下意味着不一樣的東西。它能夠用來引用Spring Framework項目自己,它就是一切開始的地方。隨着時間的推移,其餘Spring項目已經構建在Spring Framework之上。大多數狀況下,當人們說「春天」時,他們就意味着整個項目家族。本參考文檔側重於基礎:Spring Framework自己。服務器
Spring框架分爲幾個模塊。應用程序能夠選擇所需的模塊。核心是核心容器的模塊,包括配置模型和依賴注入機制。除此以外,Spring Framework還爲不一樣的應用程序體系結構提供了基礎支持,包括消息傳遞,事務數據和持久性以及Web。它還包括基於Servlet的Spring MVC Web框架,以及Spring WebFlux響應式Web框架。架構
關於模塊的說明: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平臺規範; 相反,它集成了EE保護傘中精心挑選的個別規格:框架
Spring Framework還支持依賴注入(JSR 330)和Common Annotations(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的幫助下,應用程序以devops和雲友好的方式建立,Servlet容器嵌入而且變得微不足道。從Spring Framework 5開始,WebFlux應用程序甚至不直接使用Servlet API,而且能夠在不是Servlet容器的服務器(例如Netty)上運行。
Spring繼續創新並不斷髮展。除了Spring Framework以外,還有其餘項目,例如Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch等。重要的是要記住每一個項目都有本身的源代碼存儲庫,問題跟蹤器和發佈節奏。有關Spring項目的完整列表,請參見spring.io/projects。
3.設計理念
當您瞭解框架時,重要的是不只要知道它的做用,還要了解它遵循的原則。如下是Spring Framework的指導原則:
-
提供各個層面的選擇。Spring容許您儘量晚地推遲設計決策。例如,您能夠經過配置切換持久性提供程序,而無需更改代碼。許多其餘基礎架構問題以及與第三方API的集成也是如此。
-
適應不一樣的觀點。Spring擁抱靈活性,並不認爲應該如何作。它以不一樣的視角支持普遍的應用需求。
-
保持強大的向後兼容性。Spring的演變通過精心設計,能夠在版本之間進行一些重大改變。Spring支持精心挑選的JDK版本和第三方庫,以便於維護依賴於Spring的應用程序和庫。
-
關心API設計。Spring團隊花了不少心思和時間來製做直觀的API,這些API在不少版本和多年中都有用。
-
爲代碼質量設定高標準。Spring Framework很是強調有意義的,最新的和準確的javadoc。它是極少數項目之一,能夠聲稱乾淨的代碼結構,包之間沒有循環依賴。