Spring 简单介绍和概述

Spring 学习指南大全

Spring

在这里插入图片描述

Spring 是由 Rod Johnson 创建的一个开源框架,是一个开放源代码的J2EE应用程序框架,是针对 Java Bean 的生命周期进行管理的轻量级容器框架。其创建的目的就是为了解决开发者在J2EE开发中遇到的常见问题。提供了功能强大的IOC、AOP及Web MVC等功能。

J2EE 就是为 Java Web 开发,提供的一些 Jar 包

官网

官网文档

百度百科

作者-百度百科

**注意:**此文档将根据 Spring 官网文档进行攥写,参考官网文档版本 5.2.22.RELEASE (GA)

简单介绍

我们常说的 Spring 框架指的是 Spring Framework。Spring Framework 只是 Spring 公司开源项目之一。

Spring 框架为现代基于 Java 的企业应用程序提供了全面的编程和配置模型——可以部署在任何类型的平台上。

Spring 的一个关键元素是对应用层的基础设施支持:

Spring 专注于企业应用程序的“系统工程基础”,这样团队就可以专注于应用程序的业务逻辑,而不必与特定的部署环境有不必要的联系。

Spring 低版本迁移到高版本

参考官网迁移Wiki

特点

  • 核心技术:dependency injection(依赖注入), events(事件), resources(资源), i18n(i18n国际化), validation(验证), data binding(数据绑定), type conversion(类型转换), SpEL(SpEL语句), AOP(面向切面编程).
  • 测试:mock objects(模拟对象), TestContext framework(测试上下文框架), Spring MVC Test(Srping MVC测试), WebTestClient(web测试客户端).
  • 数据访问:transactions(事务), DAO support(DAO支持), JDBC, ORM, Marshalling XML(XML编组).
  • web框架:Spring MVC 和 Spring WebFlux web框架.
  • 集成:remoting(远程处理), JMS, JCA, JMX, email(电子邮件), tasks(任务), scheduling(调度), cache(缓存).
  • 语言:Kotlin, Groovy, dynamic languages(动态语言).

以上基本就是 Spring Framework 支持的所有功能,也是我们需要掌握的全部功能。

下面我们将正式开始学习 Spring 框架。

版本:Version 5.2.22.RELEASE (RELEASE:发布版)

新功能、升级说明、支持的版本和其他主题独立于发布节奏,在项目的Spring Github Wiki上进行外部维护说明。

官方文档目录

概述

Spring 使得创建 Java 企业应用程序变得很容易。它提供了在企业环境中使用 Java 语言所需的一切,支持在 JVM 上使用 Groovy 和 Kotlin 作为替代语言,并且可以根据应用程序的需要灵活地创建多种体系结构。

从 Spring Framework 5.1 开始,Spring 需要 JDK 8+ (Java SE 8+),并为 JDK 11 LTS 提供开箱即用的支持。Java SE 8 update 60 建议作为Java 8 的最低补丁版本,但通常建议使用最新的补丁版本。

Spring 支持广泛的应用场景。在大型企业中,应用程序通常存在很长时间,并且必须在 JDK 和应用服务器上运行,其升级周期超出了开发人员的控制。其他的应用场景可能作为嵌入了运行服务器的单个 jar 运行,也可能在云环境中。还有一些可能是不需要服务器的独立应用程序(如批处理、集成工作负载、C端应用)。

Spring 是开源的。它有一个庞大而活跃的社区,提供基于各种现实世界应用用例的持续反馈。这帮助 Spring 成功地进化了很长时间。

我们所说的 “Spring” 是什么意思?

Spring 翻译为春天,一种说法为 Java 程序员开发的春天。Spring 有几种不同的含义,它可以用来指 Spring Framework 框架项目本身,这是它开始的地方。随着时间的推移,其它 Spring 项目也建立在 Spring Framework 框架之上。通常,当人们说 Spring 时,指的是整个 Spring 项目家族,或者指 Spring Framework 框架项目本身。本文指 Spring Framework 框架项目本身。

Spring 框架分为好几个模块,应用程序可以选择自己需要的模块。核心模块是核心容器模块 container,包括 configuration model(配置模型) 和 dependency injection (DI依赖注入) 机制。除此之外,Spring框架为不同的应用程序架构提供了基础支持,包括 messaging(消息传递),事务数据,持久化和 web。在 web 中它包括基于 Servlet 的 Spring MVC web框架,以及并行的 Spring WebFlux 反应式 web 框架。

关于模块的说明:Spring 框架的 jars 允许部署到 JDK 9 的模块路径(“Jigsaw”)。为了在支持 Jigsaw-enabled 的应用程序中使用,Spring Framework 5 jars 附带了 “Automatic-Module-Name” 清单条目,这些条目定义了独立于 jar 工件名称的稳定的语言级模块名称(“spring.core”、“spring.context”等)。(这些 jar 遵循相同的命名模式,带有“-”而不是”.“。例如 “spring-core” 和 “spring-context” )。当然,Spring 的框架 jar 在 JDK 8 和 9+上都可以在 classpath(类路径)上很好地工作。

Spring 的历史和 Spring Framework 框架

为了对早期 J2EE 规范开发复杂性问题的解决,Spring 在2003年应运而生。虽然有人认为 Java EE 和 Spring 是竞争关系,但 Spring 实际上是 Java EE 的补充。Spring 编程模型不包含 Java EE 平台规范;相反,它集成了从 EE 保护伞中精心挑选的个别规范:

Spring 框架还支持依赖注入(JSR 330)和通用注释(JSR 250)规范,应用程序开发人员可以选择使用这些规范来代替 Spring 框架提供的特定于 Spring 的机制。

从 Spring Framework 5.0 开始,Spring 至少需要 Java EE 7 级别(例如 Servlet 3.1+ 和 JPA 2.1+ ),同时在运行时提供与 Java EE 8 级别的新 API (例如 Servlet 4.0 和 JSON Binding 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 项目的完整列表,请参见spring.io/projects

设计原理

当你学习一个框架时,重要的是不仅要知道它做什么,还要知道它遵循什么原则。以下是 Spring 框架的指导原则:

  • 在每个级别提供选择。Spring 允许您尽可能推迟设计决策。例如,您可以通过配置切换持久性提供者,而无需更改代码。许多其他基础设施问题以及与第三方API的集成也是如此。
  • 容纳不同的观点。Spring 拥抱灵活性,对事情应该如何做并不固执己见。它从不同的角度支持广泛的应用需求。
  • 保持强大的向后兼容性。Spring 的发展经过精心管理,在版本之间几乎没有突破性的变化。Spring 支持一系列精心挑选的 JDK 版本和第三方库,以便于维护依赖 Spring 的应用程序和库。
  • 关注API设计。Spring 团队投入了大量的精力和时间来制作直观的 API,这些 API 可以跨多个版本和多年使用。
  • 为代码质量设定高标准。Spring框架非常强调有意义、最新和准确的javadoc。这是极少数几个可以声称代码结构清晰、包之间没有循环依赖关系的项目之一。

反馈和贡献

对于操作问题或诊断或调试问题,我们建议使用堆栈溢出。单击此处获取堆栈溢出时使用的建议标签列表。如果你相当确定 Spring 框架中有问题或者想要建议一个特性,请使用GitHub Issues

如果您有一个解决方案或建议的修复,您可以在Github上提交一个 pull 请求。但是,请记住,对于除了最琐碎的问题之外的所有问题,我们希望在问题追踪器中归档一个问题单,在问题追踪器中进行讨论并留下记录以供将来参考。

有关更多详细信息,请参见贡献的顶级项目页面上的指南。

快速入门

如果您刚刚开始使用 Spring,您可能希望通过创建一个基于 Spring Boot 的应用程序来开始使用 Spring 框架。Spring Boot 提供了一种快速(并且固执己见)的方法来创建一个可生产的基于 Spring 的应用程序。它基于 Spring 框架,支持约定胜于配置,旨在让您尽快启动并运行。

Spring Boot 是 Spring 框架快速整合版,不推荐新手直接上手Spring Boot。

您可以使用start.spring.io来生成一个基本的项目,或者遵循“快速入门”指南之一,比如开始构建RESTful Web服务

除了更容易理解之外,这些指南还非常注重任务,而且大部分都是基于 Spring Boot 的。它们还涵盖了 Spring portfolio 中的其他项目,在解决特定业务问题时,您可能需要考虑这些项目。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值