摘要:除此之外,還為不同的應用程序體系結構提供了基礎支持,包括消息傳遞事務數據和持久性以及,它還包括基于的框架,以及與之并行的反應性框架。還支持依賴項注入和公共注解規范,應用程序開發人員可以選擇使用這些規范,而不是提供的特定于的機制。
概述
Spring使創建Java企業應用程序變得很容易,它提供了在企業環境中使用Java語言所需要的一切,支持Groovy和Kotlin作為JVM上的替代語言,并根據應用程序的需求靈活地創建多種體系結構,從Spring Framework 5.1開始,Spring需要JDK 8+(Java SE 8+),并為JDK 11 LTS提供開箱即用的支持。
Spring支持廣泛的應用程序場景,在大型企業中,應用程序通常存在很長時間,并且必須運行在JDK和應用服務器上,升級周期超出了開發人員的控制。其他的可以作為一個多帶帶的jar運行,并嵌入服務器,可能是在云環境中,還有一些可能是不需要服務器的獨立應用程序(例如批處理或集成工作負載)。
Spring是開源的,它擁有一個大型且活躍的社區,該社區基于各種實際用例提供持續的反饋,這幫助Spring在很長一段時間內成功地發展。
我們所說的“Spring”是什么意思“Spring”一詞在不同的上下文中有不同的含義,它可以用來引用Spring Framework項目本身,這是它開始的地方,隨著時間的推移,其他Spring項目已經構建在Spring Framework之上,大多數情況下,當人們說“Spring”,他們指的是整個家庭的項目,這個參考文檔主要關注基礎:Spring Framework本身。
Spring Framework被劃分為多個模塊,應用程序可以選擇它們需要哪些模塊,核心是核心容器的模塊,包括配置模型和依賴注入機制。除此之外,Spring Framework還為不同的應用程序體系結構提供了基礎支持,包括消息傳遞、事務數據和持久性以及web,它還包括基于servlet的Spring MVC web框架,以及與之并行的Spring WebFlux反應性web框架。
關于模塊的說明:Spring的框架jar允許部署到JDK 9的模塊路徑(“Jigsaw”)。為了在支持jigsaw的應用程序中使用,Spring Framework 5 jar附帶“Automatic-Module-Name”清單條目,其中定義了穩定的語言級模塊名稱("spring.core"、"spring.context"等),獨立于jar工件名稱(jar遵循相同的命名模式,使用“-”代替“.”,例如“spring-core”,“spring-context”),當然,Spring的框架jar在JDK 8和9+的類路徑上都能很好地工作。
Spring和Spring Framework的歷史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)
Bean驗證(JSR 303)
JPA(JSR 338)
JMS(JSR 914)
以及JTA/JCA設置,以便在必要時進行事務協調。
Spring Framework還支持依賴項注入(JSR 330)和公共注解(JSR 250)規范,應用程序開發人員可以選擇使用這些規范,而不是Spring Framework提供的特定于Spring的機制。
從Spring Framework 5.0開始,Spring最小需要Java EE 7級別(例如Servlet 3.1 +、JPA 2.1 +),同時提供開箱即用的集成與更新的API在Java EE 8級別(例如Servlet 4.0、JSON綁定API)在運行時遇到,這使得Spring與Tomcat 8和Tomcat 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 Framework的指導原則:
在每個層次上提供選擇,Spring允許你盡可能推遲設計決策,例如,你可以通過配置切換持久性提供者,而無需更改代碼,對于許多其他基礎設施問題以及與第三方API的集成也是如此。
適應不同的視角,Spring支持靈活性,并且不對應該如何做事情發表意見,它支持具有不同視角的廣泛應用程序需求。
保持強大的向后兼容性,Spring的發展已經被小心地管理,以在版本之間強制進行很少的破壞性更改,Spring支持精心選擇的JDK版本和第三方庫,以方便維護依賴于Spring的應用程序和庫。
關注API設計,Spring團隊投入了大量的思想和時間來開發直觀的API,并支持多個版本和許多年。
為代碼質量設定高標準,Spring Framework非常強調有意義的、當前的和準確的javadoc,它是極少數可以聲明干凈代碼結構且包之間沒有循環依賴關系的項目之一。
入門如果你剛剛開始使用Spring,你可能希望通過創建一個基于Spring boot的應用程序來開始使用Spring Framework,Spring Boot提供了一種快速(且固定)的方法來創建基于Spring的可生產應用程序,它基于Spring Framework,支持約定而不是配置,旨在讓你盡可能快地啟動和運行。
你可以使用start.spring.io生成一個基本項目或遵循“入門”指南之一,例如開始構建RESTful Web服務。這些指南不僅更容易理解,而且非常專注于任務,其中大多數都是基于Spring Boot的,它們還涵蓋了Spring portfolio中的其他項目,你在解決特定問題時可能需要考慮這些項目。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75719.html
摘要:容器概述接口表示容器,負責實例化配置和組裝。基于的元數據不是惟一允許的配置元數據形式,容器本身與實際編寫配置元數據的格式完全解耦,現在,許多開發人員為他們的應用程序選擇基于的配置。 容器概述 org.springframework.context.ApplicationContext接口表示Spring IoC容器,負責實例化、配置和組裝bean。容器通過讀取配置元數據獲取關于要實例化...
摘要:概述容器管理一個或多個,這些是使用你提供給容器的配置元數據創建的例如,以定義的形式。在容器內部,這些定義被表示為對象,其中包含其他信息以下元數據包限定的類名通常,定義的實際實現類。 Bean概述 Spring IoC容器管理一個或多個bean,這些bean是使用你提供給容器的配置元數據創建的(例如,以XML 定義的形式)。 在容器內部,這些bean定義被表示為BeanDefinitio...
摘要:容器和介紹本章介紹了控制反轉原理的實現,也稱為依賴注入。在中,構成應用程序主干并由容器管理的對象稱為,是由容器實例化組裝和管理的對象,否則,只是應用程序中的許多對象之一,及其之間的依賴關系反映在容器使用的配置元數據中。 Spring IoC容器和bean介紹 本章介紹了控制反轉(IoC)原理的Spring Framework實現,IoC也稱為依賴注入(DI)。它是一個過程,對象僅通過構...
摘要:簡單明了,如果婚介給我們的人選不符合要求,我們就會拋出異常。的一個重點是在系統運行中,動態的向某個對象提供它所需要的其他對象。切點通過一個條件來匹配要攔截的類,這個條件稱為切點。 特點 1. IOC/依賴注入 IOC就是一個負責控制管理對象生命周期和對象間關系的容器。IOC讓程序員用關注怎么去創建對象,不必再為單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,而是關注對象創建之后的...
摘要:注解從版開始,的緩存抽象完全支持標準注解和以及和。使用方法調用的結果更新緩存,要求將其作為使用注解的參數傳遞給它由于這種差異,允許在實際方法調用之前或之后更新緩存。非常相似,當方法調用導致異常時,支持條件驅逐。 JCache(JSR-107)注解 從4.1版開始,Spring的緩存抽象完全支持JCache標準注解:@CacheResult、@CachePut、@CacheRemove和...
閱讀 1118·2021-11-25 09:43
閱讀 1639·2021-09-13 10:25
閱讀 2592·2021-09-09 11:38
閱讀 3400·2021-09-07 10:14
閱讀 1714·2019-08-30 15:52
閱讀 641·2019-08-30 15:44
閱讀 3572·2019-08-29 13:23
閱讀 1974·2019-08-26 13:33