摘要:除此之外,还为不同的应用程序体系结构提供了基础支持,包括消息传递事务数据和持久性以及,它还包括基于的框架,以及与之并行的反应性框架。还支持依赖项注入和公共注解规范,应用程序开发人员可以选择使用这些规范,而不是提供的特定于的机制。
概述
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中的其他项目,你在解决特定问题时可能需要考虑这些项目。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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和...
阅读 1089·2021-11-25 09:43
阅读 1610·2021-09-13 10:25
阅读 2543·2021-09-09 11:38
阅读 3378·2021-09-07 10:14
阅读 1673·2019-08-30 15:52
阅读 593·2019-08-30 15:44
阅读 3521·2019-08-29 13:23
阅读 1926·2019-08-26 13:33