版本:5.1.11.BUILD-SNAPSHOTgit
Spring简化了Java企业级应用程序的建立。它提供了Java语言在企业级环境中须要的一切,它支持Groovy和Kotlin,且支持多种结构的应用程序。从Spring框架5.1.x版本开始,Spring须要JDK 8+(Java SE 8+),而且它支持JDK 11 LTS。github
Spring支持很是多的应用场景。在大型企业中,大部分的应用程序长期运行在升级周期不受开发人员控制的JDK和应用程序服务器上。有些应用程序经过将jar包丢给云服务器的方式运行。还有一些应用程序运行时不须要服务器(例如:批处理程序等)。spring
Spring是开源。它的社区很活跃,能够获得许多实际用例的反馈。这一点有助于Spring长期稳定的发展。数据库
Spring是什么意思?
“Spring”这个单词在不一样的语境上下文中表达的含义不一样。它能够用来指代Spring框架项目自己(Spring开始的地方。随着时间流逝,逐渐产生了许多基于Spring的项。一般,如今人们提及“Spring”时,它们说的是Spring以及基于Spring而产生的一系列项目。然而,本参考文档重点关注基础:Spring框架自己。编程
Spring框架分为多个模块。应用程序能够按需选择。最核心的是核心容器模块,它包括了配置模型和依赖注入机制。除此之外,Spring框架还为不一样的应用程序体系结构提供了基础支持,好比消息传递、数据库事务、网络编程等。Spring框架还包括了基于Servlet的Spring MVC反应式的Spring WebFlux框架。服务器
这里是一些关于模块的注意点:Spring框架的jar能够部署到JDK9 的模块路径(jigsaw)。为了可以在支持jigsaw的应用程序中使用,Spring 5 附带了自动命名的清单条目,这些清单条目定义了稳定的语言级别的模块名称(spring.core、spring.context等),这些名称区别于jar工程的名称(jar使“-”区分而不是使用“.”区分,例如:spring-core、spring-context等)。固然,Spring框架的jar包在JDK 8 和 9 +上都能良好运行。网络
Spring以及Spring框架的历史
因为早期的J2EE规范比较复杂,因此诞生Spring框架。尽管有些人认为Java EE和Spring是竞争关系,但实际上Spring是Java EE的辅助。Spring编程模型不彻底包含Java 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)
- 用于事务协做的JTA/JCA设置。
Spring框架还支持依赖注入(JSR 330)和通用注释(JSR 250)规范 ,应用程序开发人员能够选择使用这些规范来代替Spring提供的特殊机制。框架
从5.0版本开始,Spring框架至少须要Java EE 7级别的支持(例如:Servlet 3.1 + , JPA 2.1 +),同时,Spring还提供了与Java EE 8 级别的新的API的。若是运行时遇到Servlet 4.0 、JSON绑定的API等,也没有问题。这样的话,Spring与Tomcat 8 和 9 、 WebSphere 9 以及 JBoss EAP 7 就彻底兼容了。ide
随着时间的推移,Java EE在应用程序开发中的角色已经发生了转变。早期,建立一个应用程序,而后部署到应用程序容器上。如今,借助SpringBoot,能够经过Devops和云原生的方式建立应用程序。从Spring 5开始,WebFlux应用甚至不直接使用Servlet API。而且能够在非Servlet容器(例如:Netty)上运行。
Spring依然在持续不断地创新和发展。除了Spring框架,许多其余项目也应运而生,例如:Spring Boot 、Spring Security 、Spring Data、SpringCloud、Spring Batch等。须要注意的是,这些项目有他们本身的源代码存储库以及问题追踪和版本发布节奏等。有关Spring项目的完整列表,请参见:spring.io/projects 。
设计原理
当你学习框架的时候,不只仅须要知其然,更要知其因此然。下面是Spring框架的指导原则:
- 在每一个级别都提供选择。例如,您能够在不更改代码的状况下,经过配置切换持久层提供者。对于许多其余基础架构问题以及与第三方API的集成也是如此。
- 容纳不一样的观点。Spring很是灵活,而且它不要求应用程序应该怎们作。它经过不一样的视角来支持多种应用程序。
- 保持强大的兼容性。Spring对版本进行了精心的管理,这样,在版本迭代时,破坏性更改被极大地下降。Spring对JDK的版本和第三方库也进行了精挑细选,这样,维护应用程序和库也变得更加方便。
- 关注API设计。Spring团队花费了大量的时间和精力来设计直观的、可以经历时间考验的API。
- 高质量的代码。Spring框架强调有意义、及时更新、准确的JavaDoc。它是极少数能够声明本身的代码结构清晰且程序之间没有循环依赖的项目之一。
反馈和贡献
译者注:本段没啥特别的,采用机译。
对于操做方法问题或诊断或调试问题,咱们建议使用StackOverflow,而且有一个问题页面列出了要使用的建议标签。若是确切地认为Spring框架中有问题或想提出功能,请使用GitHub Issues。
若是您有解决方案或建议的解决方案,能够在Github上提交拉取请求 。可是,请记住,对于除最琐碎的问题之外的全部问题,咱们但愿在问题跟踪器中记录故障单,在该跟踪器中进行讨论并保留记录以备未来参考。
有关更多详细信息,请参见CONTRIBUTING顶级项目页面上的准则 。
入门
译者注:本段也没啥可看的,采用机译。
若是您刚刚开始使用Spring,则可能须要经过建立基于Spring Boot的应用程序来开始使用Spring Framework 。Spring Boot提供了一种快速(且自觉得是)的方式来建立可用于生产环境的基于Spring的应用程序。它基于Spring框架,更倾向于约定而不是配置,而且旨在使您尽快启动并运行。
您可使用start.spring.io生成一个基本项目,或遵循“入门”指南之一,例如“ 入门RESTful Web Service的构建”。这些指南不只易于理解,并且很是注重任务,而且大多数基于Spring Boot。它们还涵盖了Spring产品组合中的其余项目,您在解决特定问题时可能要考虑这些项目。