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在很长一段时间内成功发展。编程
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+上的类路径上都能正常工做。并发
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。
当您了解框架时,重要的是不只要知道它的做用,还要了解它遵循的原则。如下是Spring Framework的指导原则:
提供各个层面的选择。Spring容许您尽量晚地推迟设计决策。例如,您能够经过配置切换持久性提供程序,而无需更改代码。许多其余基础架构问题以及与第三方API的集成也是如此。
适应不一样的观点。Spring拥抱灵活性,并不认为应该如何作。它以不一样的视角支持普遍的应用需求。
保持强大的向后兼容性。Spring的演变通过精心设计,能够在版本之间进行一些重大改变。Spring支持精心挑选的JDK版本和第三方库,以便于维护依赖于Spring的应用程序和库。
关心API设计。Spring团队花了不少心思和时间来制做直观的API,这些API在不少版本和多年中都有用。
为代码质量设定高标准。Spring Framework很是强调有意义的,最新的和准确的javadoc。它是极少数项目之一,能够声称干净的代码结构,包之间没有循环依赖。