Version 5.3.6
Spring使得创建Java企业应用程序变得很容易。它提供了在企业环境中使用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并可以根据应用程序的需求灵活地创建多种架构。从Spring Framework 5.1开始,Spring要求JDK 8+ (Java SE 8+),并提供对JDK 11 LTS的开箱即用支持。建议使用Java SE 8 update 60作为Java 8的最小补丁版本,但通常建议使用最近的补丁版本。
Spring支持广泛的应用场景。在大型企业中,应用程序通常存在很长时间,必须运行在JDK和应用服务器上,而这些服务器的升级周期超出了开发人员的控制范围。其他的可能作为单个jar运行,并嵌入服务器,可能在云环境中。还有一些可能是不需要服务器的独立应用程序(如批处理或集成工作负载)。
Spring是开源的。它有一个大型且活跃的社区,根据不同的真实世界用例提供持续的反馈。这帮助Spring在很长一段时间里成功地进化。
1. Spring是什么
“Spring”这个词在不同的语境中有不同的含义。它可以用来指Spring框架项目本身,这是一切开始的地方。随着时间的推移,其他Spring项目已经构建在Spring框架之上。通常,当人们说“Spring”时,他们指的是项目的整个家族。本参考文档关注的是基础:Spring框架本身。
Spring框架被划分为模块。应用程序可以选择它们需要的模块。core是核心容器的模块,包括一个配置模型和一个依赖注入机制。除此之外,Spring框架还为不同的应用程序体系结构提供了基础支持,包括消息传递、事务数据和持久性以及web。它还包括基于servlet的Spring MVC web框架,以及Spring WebFlux响应式web框架。
2. Spring的历史和Spring框架
Spring在2003年作为对早期J2EE规范复杂性的响应而出现。虽然有些人认为Java EE和Spring是竞争的,但实际上,Spring是Java EE的补充。Spring编程模型不包含Java EE平台规范;相反,它集成了从EE保护伞中精心挑选的单个规范:
- 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)
- as well as JTA/JCA setups for transaction coordination, if necessary.
Spring框架还支持依赖注入(JSR 330)和公共注释(JSR 250)规范,应用程序开发人员可以选择使用这些规范,而不是使用Spring框架提供的特定于Spring的机制。
Spring Framework 5.0,春天需要Java EE 7水平(例如Servlet 3.1 +, JPA 2.1 +)最小,同时提供开箱即用的集成与更新的API在Java EE 8级(例如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框架,还有其他项目,如Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch等等。记住每个项目都有自己的源代码存储库、问题跟踪器和发布节奏是很重要的。看到spring.io/projects的完整春季项目列表。
3.设计理念
在学习框架时,重要的是不仅要知道它做什么,还要知道它遵循什么原则。以下是Spring框架的指导原则:
- 在每个关卡提供选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。对于许多其他基础设施问题以及与第三方api的集成也是如此。
- 容纳不同的观点。Spring拥抱灵活性,对事情应该如何做并不固执己见。它以不同的视角支持广泛的应用需求。
- 保持强大的向后兼容性。Spring的发展经过了精心的管理,使得版本之间很少有突破性的变化。Spring支持精心选择的JDK版本和第三方库,以促进依赖于Spring的应用程序和库的维护。
- 关注API设计。Spring团队花了大量的心思和时间来制作直观的api,这些api可以跨越多个版本和很多年。
- 为代码质量设定高标准。Spring框架非常强调有意义的、当前的和准确的javadoc。它是少数几个可以声明干净的代码结构,且包之间没有循环依赖关系的项目之一。
4. 反馈和贡献
对于how-to问题、诊断或调试问题,我们建议使用Stack Overflow。单击这里查看建议在Stack Overflow上使用的标记列表。如果你非常确定Spring框架存在问题,或者想建议一个特性,请使用GitHub Issues。
如果你有一个解决方案或建议修复,你可以在Github上提交一个pull请求。
5. 开始
如果您刚刚开始使用Spring,您可能希望通过创建一个基于Spring引导的应用程序来开始使用Spring框架。Spring Boot提供了一种快速(且固执己见)的方法来创建一个可用于生产的基于Spring的应用程序。它基于Spring框架,支持约定而不是配置,并被设计为让您尽快启动和运行。
您可以使用start.spring.io来生成一个基本项目,或者遵循“入门”指南中的一个,比如入门构建一个RESTful Web服务。这些指南不仅易于理解,而且非常专注于任务,而且大多数都基于Spring Boot。它们还涵盖了Spring投资组合中的其他项目,您在解决特定问题时可能需要考虑这些项目。
