Version 5.3.7
Spring使得構(gòu)建Java應(yīng)用變得簡單沸伏。它提供了在企業(yè)環(huán)境中使用Java語言所需的一切,支持Groovy和Kotlin作為JVM上的替代語言磷斧,以及根據(jù)應(yīng)用程序的需要創(chuàng)建多種體系結(jié)構(gòu)的靈活性振愿。從Spring Framework 5.1開始,Spring需要JDK 8+ (Java SE 8+)弛饭,并提供對JDK 11 LTS的開箱即用支持冕末。建議使用Java SE 8 update 60作為Java 8的最小補丁版本,但使用最新的補丁版本也可侣颂。
Spring支持廣泛的應(yīng)用程序場景档桃。在大型企業(yè)中,應(yīng)用程序往往存在很長時間憔晒,且JDK和應(yīng)用服務(wù)器的升級周期超出了開發(fā)人員的控制范圍藻肄。其他的可能作為一個內(nèi)置服務(wù)器的jar運行蔑舞,也可能在云環(huán)境中。還有一些可能是不需要服務(wù)器的獨立應(yīng)用程序(如批處理或集成工作負載)嘹屯。
Spring是開源的攻询。它有一個龐大而活躍的社區(qū),基于各種不同的真實世界用例提供持續(xù)的反饋抚垄。這幫助Spring在很長一段時間內(nèi)成功地發(fā)展蜕窿。
1.我們說的“Spring”指的是什么谋逻?
術(shù)語“Spring”在不同的上下文中有不同的含義呆馁。它可以用來引用Spring Framework項目本身,這是最開始的Spring毁兆。隨著時間的推移浙滤,其他Spring項目也構(gòu)建在Spring Framework之上。通常气堕,當(dāng)人們說“Spring”時纺腊,他們指的是整個Spring家族。本參考文檔關(guān)注的是:Spring Framework本身茎芭。
Spring Framework分為多個模塊揖膜。應(yīng)用程序可以根據(jù)需要選擇。核心是IOC模塊梅桩,包括一個配置模型和一個依賴注入機制壹粟。除此之外,Spring框架為不同的應(yīng)用程序架構(gòu)提供了基礎(chǔ)支持宿百,包括消息隊列趁仙、事務(wù)、持久化以及web垦页。它還包括基于Servlet的Spring MVC web框架雀费,以及Spring WebFlux響應(yīng)式web框架。
2.Spring和Spring Framework的歷史
Spring出現(xiàn)于2003年痊焊,是為了應(yīng)對早期J2EE規(guī)范的復(fù)雜性盏袄。雖然有些人認為Java EE和Spring是競爭關(guān)系,但Spring實際上是Java EE的補充薄啥。Spring編程模型不包含Java EE平臺規(guī)范辕羽;相反,它與Java EE中精心挑選的各個規(guī)范集成在一起:
- 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)
Spring框架還支持Dependency Injection(JSR 330)和Common Annotations(JSR 250)規(guī)范罪佳,應(yīng)用程序開發(fā)人員可以選擇使用這些規(guī)范來代替Spring Framework提供的特定于Spring的機制逛漫。
從Spring Framework 5.0開始, Spring至少需要Java EE 7(e.g. Servlet 3.1+,JPA 2.1+)- 同時在運行時提供與Java EE 8級別的新API(e.g. Servlet 4.0赘艳,JSON Binding API)的開箱即用的集成酌毡。這使Spring與Tomcat 8和9克握、WebSphere 9和JBoss EAP 7完全兼容。
隨著時間的推移枷踏,Java EE在應(yīng)用程序開發(fā)中的角色已經(jīng)演變菩暗。在Java EE和Spring的早期,創(chuàng)建應(yīng)用程序是為了部署到應(yīng)用服務(wù)器上旭蠕。今天停团,在Spring Boot的幫助下,應(yīng)用程序以一種對devops和云友好的方式創(chuàng)建掏熬,其中嵌入了Servlet容器佑稠,更改起來很簡單。從Spring Framework 5開始旗芬,WebFlux應(yīng)用程序甚至不直接使用Servlet API舌胶,可以運行在不是Servlet容器的服務(wù)器上(比如Netty)。
3.設(shè)計理念
當(dāng)你學(xué)習(xí)一個框架時疮丛,不僅要知道它是做什么的幔嫂,還要知道它遵循什么原則。下面是Spring Framework 的指導(dǎo)原則:
在每個地方都提供選擇誊薄。Spring允許您盡可能晚地推遲設(shè)計決策履恩。例如,您可以通過配置來切換持久化實現(xiàn)呢蔫,而不需要更改代碼切心。對于許多其他基礎(chǔ)設(shè)施問題以及與第三方API的集成也是如此。
容納不同的觀點咐刨。Spring擁抱靈活性昙衅,對于事情應(yīng)該如何做并不固執(zhí)己見。它以不同的視角支持廣泛的應(yīng)用程序需求定鸟。
保持強大的向后兼容性而涉。Spring的發(fā)展經(jīng)過了精心的管理,在版本之間只有很少的中斷性更新联予。Spring支持精心選擇的一系列JDK版本和第三方庫啼县,以促進依賴于Spring的應(yīng)用程序和庫的維護。
仔細設(shè)計API沸久。Spring團隊花了很多心思和時間來設(shè)計直觀的API季眷,這些API經(jīng)歷了數(shù)年時間和數(shù)個版本。
為代碼質(zhì)量設(shè)置高標(biāo)準(zhǔn)卷胯。Spring框架非常強調(diào)有意義的子刮、及時的和準(zhǔn)確的文檔。它是極少擁有干凈的代碼結(jié)構(gòu)且包之間沒有循環(huán)依賴的項目之一。