Spring Framework Overview
Posted qq_23473123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Framework Overview相关的知识,希望对你有一定的参考价值。
简介
Spring是创建java应用变得更易用。它提供了在企业应用环境中使用java语言所需的一切,支持Groovy和Kotlin作为运行在JVM上的可选语言,并根据应用所需灵活的创建多种框架。从Spring Framework 5.1,Spring 需要JDK 8+(Java SE 8+)并为JDK11 LTS提供开箱即用的支持。建议将Java SE 8 Update 60(java 8)作为最低的补丁版本,但是通常建议使用最新的补丁版本。
Spring支持广泛的应用场景。在一个大型的企业中,应用往往存在很长时间,并且必须在升级周期不受开发人员控制的JDK和应用服务上。其他可能作为嵌入式服务的单个jar运行,可能在云环境中。还有其他不需要server的单独应用(例如批量或者集成的工作负载)。
Spring 是开源的。它拥有一个庞大而活跃的社区,可根据各种实际用例提供持续的反馈。这帮助 Spring 在很长一段时间内成功发展。
我们所说的“春天”是什么意思
“Spring”术语在不同上下文意味着不同的东西。它可以被使用指代Spring Framework项目本身,这就是一切的开始。随着时间推移,其他Spring项目是被构建在Spring Framework之上。大多数情况下,人们说“Spring”时,他们指的是整个项目系列。本文主要侧重于基础:Spring Framework本身。
Spring Framewoek是被分为多个模块。应用可以选择需要的模块。核心是core container模块,包括一个配置模块和一个依赖注入机制。除此之外,Spring Framework为不同的应用架构提供基本支持,包括消息传递、事务数据和持久性以及Web。它还包括基于Servlet的Spring MVC web Framework,以及平行的Spring WebFlux reactive web framework。
关于模块的说明:Spring的framework运行部署到JDK 9的模块路径(“Jigsaw”)中。为了在Jigsaw-enables应用中使用,Spring Framework 5 jar带有“Automaic-Module-Name”主要条目,这些条目定义了固定语言级模块名称(“spring.core”,“spring.context”等),独立于jar工程名(jar遵循同一规则使用“-”代替“.”,使用"-“代替”.",例如"spring-core"和"spring-context")。
Spring和Spring Framework的历史
Spring 于2003年应运而生,以应对早期J2EE规范的复杂性。虽然一些人认为Java EE和Spring是在竞争,实际上Spring 是对java EE的补充。Spring编程模型不包含Java EE平台规范,相反,它集成了来自EE umbrella中精心挑选的单个规格:
- 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 Framework还支持Dependency Injection( 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的新APIs(例如Servlet 4.0,JSON Bingding API)当在运行时需要时。这使Spring完全兼容例如Tomcat 8和9、WebSphere 9和JBoss EAP 7。
随着时间推移,Java EE在应用开发中的作用不断发展。在Java EE和Spring早期,应用是被创建被发布到一个应用server。今天,在Spring Boot的帮助下,应用是被创建在一个devops-和cloud-friendly方式,使用嵌入式Servelt容器和更简单的更改。从Spring Framework 5开始,WebFlux应用甚至不直接使用Servlet API并且可以运行在不是Servlet容器(例如Netty)的server上。
Spring 不断创新和发展。除了 Spring 框架之外,还有其他项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。重要的是要记住,每个项目都有自己的源代码存储库、问题跟踪器和发布节奏。有关Spring 项目的完整列表,请参阅spring.io/projects。
设计理解
当你想要学习一个框架时,重要的是不仅要知道它能做啥还要了解它遵循的原则。以下是Spring Framework的指导原则:
- 提供各种级别的选择。Spring允许你尽可能晚的推迟设计决策。例如你可以选择持久化提供通过配置而不是你的代码。许多其他的底层问题和第三方APIs的集成也是如此。
- 包容不同的观点。Spring拥抱灵活并对事情不是固执己见。它以不同的视角支持广泛的应用需求。
- 保持强大的向后兼容。Spring的演变经过精心的管理,强制在版本之间出现很少的破坏改变。Spring支持精心选择JDK版本范围和第三方库,以方便维护应用和Spring的依赖。
- 精心的API设计。Spring 团队投入很多精力和时间去使APIs更直观,这些API可以跨多个版本和时间。
- 为代码质量设定高的标准。Spring Framework非常强调有意义、最新、精准的javadoc。它是极少数可以声称简洁的代码结构并没有包循环依赖的项目之一。
反馈与贡献
对于操作问题或诊断或调试问题,我们建议使用 Stack Overflow。单击 此处 获取在 Stack Overflow 上使用的建议标签列表。如果您相当确定 Spring Framework 中存在问题或想要提出功能建议,请使用GitHub 问题。
如果您有解决方案或建议的修复方案,您可以在Github上提交拉取请求 。但是,请记住,对于除最微不足道的问题之外的所有问题,我们希望在问题跟踪器中提交一张票,在那里进行讨论并留下记录以供将来参考。
有关更多详细信息,请参阅CONTRIBUTING顶级项目页面上的指南。
以上是关于Spring Framework Overview的主要内容,如果未能解决你的问题,请参考以下文章
神经结构化学习 1 框架概述 Neural Structured Learning Part 1: Framework overview
[VS2010] ADO.NET Entity Framework 新功能:永续保存无知对象 (Persistence-Ignorant Object) Overview