如今全部的JAVAEE 開發都離不開spring框架,能夠說從用戶訪問開始到將內容呈現給用戶,每一步操做都離不開spring的身影,spring家族也很強大
這是spring家族中的一小部分項目;接下來我會給你們一塊兒來解開這其中的第二個,也是元老級的項目 ————————spring frameworkjava
Spring能夠輕鬆建立Java企業應用程序。它提供了在企業環境中使用Java語言所需的一切,支持Groovy和Kotlin做爲JVM上的替代語言,並可根據應用程序的須要靈活地建立多種體系結構。從Spring Framework 5.0開始,Spring須要JDK 8+(Java SE 8+),而且已經爲JDK 9提供了開箱即用的支持。spring
Spring支持普遍的應用場景。在大型企業中,應用程序一般存在很長時間,而且必須在升級週期超出開發人員控制範圍的JDK和應用程序服務器上運行。其餘人可能在嵌入服務器的狀況下做爲單個jar運行,可能在雲環境中運行。還有一些多是不須要服務器的獨立應用程序(例如批處理或集成工做負載)。編程
Spring是開源的。它擁有一個龐大而活躍的社區,可根據各類各樣的實際用例提供持續的反饋。這有助於Spring在很長一段時間內成功發展。服務器
Spring於2003年成立,是對早期J2EE規範複雜性的迴應 。雖然有些人認爲Java EE和Spring處於競爭中,但Spring其實是對Java EE的補充。Spring編程模型不包含Java EE平臺規範; 相反,它集成了EE保護傘中精心挑選的個別規格:架構
Servlet API(JSR 340)併發
WebSocket API(JSR 356)框架
併發實用程序(JSR 236)設計
JSON綁定API(JSR 367)orm
Bean驗證(JSR 303)blog
JPA(JSR 338)
JMS(JSR 914)
以及必要時用於事務協調的JTA / JCA設置。
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。
當您瞭解框架時,重要的是不只要知道它的做用,還要了解它遵循的原則。如下是Spring Framework的指導原則:
提供各個層面的選擇。Spring容許您儘量晚地推遲設計決策。例如,您能夠經過配置切換持久性提供程序,而無需更改代碼。許多其餘基礎架構問題以及與第三方API的集成也是如此。
適應不一樣的觀點。Spring擁抱靈活性,並不認爲應該如何作。它以不一樣的視角支持普遍的應用需求。
保持強大的向後兼容性。Spring的演變通過精心設計,能夠在版本之間進行一些重大改變。Spring支持精心挑選的JDK版本和第三方庫,以便於維護依賴於Spring的應用程序和庫。
關心API設計。Spring團隊花了不少心思和時間來製做直觀的API,這些API在不少版本和多年中都有用。
爲代碼質量設定高標準。Spring Framework很是強調有意義的,最新的和準確的javadoc。它是極少數項目之一,能夠聲稱乾淨的代碼結構,包之間沒有循環依賴。