1. 概述

官方文档地址

Spring 让开发 Java 企业应用程序变得容易。提供了在企业环境中使用 Java 语言所需的一切,并支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以根据应用程序的需要灵活的创建多种架构。从 Spring Framework 5.1 开始,Spring 需要 JDK 8+(Java SE 8+)并为 JDK 11 LTS 提供开箱即用的支持。JDK建议使用最新的1.8补丁版本。

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

Spring 是开源的。它拥有一个庞大而活跃的社区,可根据各种实际用例提供持续的反馈。这帮助 Spring 在很长一段时间内成功发展。

2. Spring的含义

术语“Spring”在不同的上下文中意味着不同的东西。它可以用来指 Spring Framework 项目本身,这就是一切的开始。随着时间的推移,其他 Spring 项目已经构建在 Spring Framework 之上。大多数情况下,当人们说“Spring”时,他们指的是整个项目系列(也就是Spring 全家桶)。

Spring 框架分为多个模块。应用程序可以选择他们需要的模块。core是核心容器的模块,包括配置模型和依赖注入机制。除此之外,Spring Framework 为不同的应用程序架构提供基础支持,包括消息传递、事务、数据持久性以及 Web框架。 Web框架包括基于 Servlet 的 Spring MVC Web 框架,以及并行的 Spring WebFlux 响应式 Web 框架。

3. Spring 的历史和 Spring 框架

Spring 于 2003 年应运而生,以应对早期J2EE规范的复杂性 。虽然有些人认为 Java EE 和 Spring 是在竞争,但实际上 Spring 是对 Java EE 的补充。Spring 编程模型不包含 Java EE 平台规范;相反,它集成了 J2EE中精心挑选的单个功能:

  • Servlet API ( JSR 340 )

  • WebSocket API ( JSR 356 )

  • 并发实用程序 ( JSR 236 )

  • JSON 绑定 API ( JSR 367 )

  • Bean 验证 ( 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 级别提供与较新 API 的开箱即用集成(例如 Servlet 4.0、JSON Binding API)。这使 Spring 与 Tomcat 8 和 9、WebSphere 9 和 JBoss EAP 7 等Web容器完全兼容。

随着时间的推移,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 等。重要的是要记住,每个项目都有自己的源代码存储库、问题跟踪器和发布节奏。

4. 设计理念

当您了解一个框架时,重要的是不仅要了解它的作用,还要了解它遵循的原则。以下是 Spring Framework 的指导原则:

  • 提供各个级别的选择。Spring 允许您尽可能晚地推迟设计决策。例如,您可以在不更改代码的情况下通过配置切换持久性提供程序。许多其他基础设施问题和与第三方 API 的集成也是如此。

  • 包容不同的观点。Spring 拥抱灵活性,并且对事情应该如何做没有固执己见。它以不同的视角支持广泛的应用需求。

  • 保持强大的向后兼容性。Spring 的演变经过精心管理,以强制在版本之间进行很少的重大更改。Spring 支持精心挑选的一系列 JDK 版本和第三方库,以方便维护依赖 Spring 的应用程序和库。

  • 关心 API 设计。Spring 团队投入了大量的思想和时间来制作直观的 API,并在许多版本和多年中保持不变。

  • 为代码质量设定高标准。Spring Framework 非常强调有意义、最新和准确的 java doc。它是极少数可以声称代码结构清晰且包之间没有循环依赖关系的项目之一。

5. 特性(功能)

  • 核心模块:依赖项注入,事件,资源,i18n,验证,数据绑定,类型转换,SpEL,AOP。

  • 测试模块:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。

  • 数据访问模块:事务,DAO支持,JDBC,ORM,XML。

  • Web框架:Spring MVC和 Spring WebFlux 。

  • 集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。

  • 语言支持:Kotlin,Groovy,动态语言。

6. 体系结构

Spring 框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration、Web、AOP、Aspects、Messaging、Instrumentation、Core Container 和 Test。

7. 源码结构

模块名 说明
spring-aop 提供了面向切面编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以降低耦合性。
spring-aspects 提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。
spring-beans 提供了 BeanFactory,是工厂模式的经典实现,Spring 将管理对象称为 Bean。
spring-context 建立在核心和 Beans 模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext 接口是上下文模块的焦点。
spring-context-indexer Spring 的类管理组件和 Classpath 扫描
spring-context-support 将第三方库整合进 Spring 应用上下文 提供支持
spring-core 提供了 Spring 框架的基本组成部分,包括 IoC 和 DI 功能。
spring-expression 是运行时查询和操作对象图的强大的表达式语言
spring-instrument 提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
spring-jcl Commons Logging 桥接模块的封装
spring-jdbc 提供了一个 JDBC 的抽象层,大幅度减少了在开发过程中对数据库操作的编码。
spring-jms 指 Java 消息服务,包含的功能为生产和消费的信息。
spring-messaging 是运行时查询和操作对象图的强大的表达式语言。
spring-orm 对流行的对象关系映射 API,包括 JPA、JDO、Hibernate 和 iBatis 提供了的集成层
spring-oxm 提供了一个支持对象/XML 映射的抽象层实现,如 JAXB、Castor、XMLBeans、JiBX 和 XStream。
spring-r2dbc 基于R2DBC的存储库集成
spring-test 支持 Spring 组件,使用 JUnit 或 TestNG 框架的测试。
spring-tx 支持编程和声明式事务管理实现特殊接口类,并为所有的 POJO
spring-web 提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IoC 容器初始化以及 Web 应用上下文。
spring-webflux 完全的reactive并且非阻塞的web框架
spring-webmvc 模型-视图-控制的体系结构和可以用来开发灵活、松散耦合的 web 应用程序的组件
spring-websocket 全新的WebSocket支持

Spring5中文文档【1】Spring框架概述相关推荐

  1. spring5中文文档

    ` spring5中文文档 https://github.com/DocsHome/spring-docs/blob/master/pages/core/overview.md

  2. 【Guacamole中文文档】一、概述 —— 序言

    序言 本书翻译自Apache Guacamole官方手册,英文版由Guacamole项目的上游开发人员编写.这是官方的通用文档,在线版本:http://guacamole.apache.org/ .随 ...

  3. xilinx中文文档编号及其内容简介

    目录 前言 一.7系列user guides 二.vivado_user_guides 结束语 前言 为使广大fpga工程师更快捷地找到所需要的xilinx中文文档,笔者在这里对一些常用的xilinx ...

  4. Spring 系列框架的中文文档

    现在互联网上的 Spring 框架相关的中文文档基本上都是机器翻译,内容晦涩难懂且常年未更新.例如,像 spring-security 等这种概念繁多,体系复杂的技术,对于新手来说,没有优质的技术文档 ...

  5. springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

    源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...

  6. Spring Security中文文档

    Spring Security中文文档 来源:https://www.springcloud.cc/spring-security.html#overall-architecture 作者 Ben A ...

  7. Spring Boot中文文档

    1.5.2.RELEASE Part I. Spring Boot 文档 本节简要介绍了Spring Boot文档,是整个文档的参考指南. 您可以完整阅读本参考指南,或者如果您不感兴趣的话可以跳过该部 ...

  8. Spring Cloud Dalston.RELEASE中文文档

    Spring Cloud Dalston.RELEASE中文文档 Spring Cloud 目录 特性 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序 ...

  9. Spring Cloud Alibaba 官方中文文档

    Spring Cloud Alibaba 官方中文文档 1. 介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用服务的必需组件,方便开发者通 ...

最新文章

  1. [导入]ASP.NET AJAX 说明文档-客户端引用-全局命名空间-JavaScript 基础类型扩展-Array 类型扩展-add 函数...
  2. 读书笔记《Hadoop开源云计算平台》
  3. 【互联网安全】DDoS攻防原理及实战
  4. 信息系统项目管理案例3
  5. C#.NET常见问题(FAQ)-Combobox如何设置不可以编辑
  6. MA5680T OLT管理软件,全智能判断板卡,无人值守策略,根据光猫类型自动扫描添加光猫...
  7. URL.createObjectURL图片预览
  8. Superset集成到iframe 跨域 无需账号登录
  9. 第一周例行报告及作业汇总
  10. Mac系统用命令打开ping端口的方法
  11. 51 Nod 一维战舰
  12. Java task类需要自己销毁_并发编程之线程创建到销毁、常用API
  13. apple帐号登录服务器端接入
  14. c语言求最小公倍数和最大公约数
  15. 如何修改ICO文件的尺寸
  16. Rsa前后端加密交互 带demo
  17. 计算机系统要素-从零开始构建现代计算机-答案
  18. python用pip安装numpy完整命令_Python--Numpy安装
  19. 黑群晖二合一安装不了套件_【优选产品】Si1133/53光学传感器多功能评估套件
  20. 5G智慧医疗十大应用场景,你知道多少?

热门文章

  1. 软件分享 pqmagic 8.0中文版优秀硬盘分区管理工具
  2. 沙发沙发按时发生法师法师法师法师法萨芬
  3. 软件设计师——数据流图设计(下午试题一)
  4. TCP/UDP常见的端口号
  5. 状态机 stateless_Stateless 3.0-.NET Core的状态机库
  6. 前端 xxx = xxx xxx , xxx = xxx || xxx到底什么意思
  7. linux db2删除表字段命令,DB2 的表在删除字段后 表会挂起 需要执行 reorg命令
  8. 用ST-Link V2烧录器配合arduino IDE给STM32F103C8T6烧写程序以及注意事项
  9. PHP图片托管,免费PHP图床源码收集汇总
  10. 开始我的第一个游戏引擎制作