Spring-概述

Spring是什么
Spring是一个开源的Java基础框架,它为Java应用提供了全面的基础设施支持。Spring是由Rod Johnson提出并创立。Spring的核心目标是简化Java开发,使得开发者可以更专注于业务逻辑而非底层实现。
Spring框架自2002年首次发布以来,经历了多个重要版本的迭代,目前最新发布的正式版本已经到了6.2.x系列。

Spring的含义
广义上的Spring
广义上Spring通常指的是Spring全家桶,它是一个庞大的生态系统,包含了一系列相互关联的框架和工具,旨在简化企业级Java开发。Spring全局桶涵盖了从Web开发、数据访问、安全性、云原生应用到微服务架构等多个领域。
主要组件包括:
1.Spring Framework: 核心组件,提供IOC容器、AOP、事务发布、数据访问等功能。
2.Spring MVC: Web框架,用于构建Web应用程序。
3.Spring Boot: 简化Spring应用的创建、配置和部署。
4.Spring Data: 提供与数据存储技术集成的统一简化的API。
5.Spring Security: 安全框架,提供认证和授权服务。
6.Spring Cloud: 微服务框架,支持服务发现、配置管理、断路器等。
7.Spring Batch: 批处理框架,用于开发企业级批处理应用程序。
8.Spring Session: 提供分布式会话管理。
9.Spring WebSocket: 支持WebSocket通信。
10.Spring Reactive: 响应式编程模型,支持异步、非阻塞的应用程序。
狭义上的Spring
狭义上Spring通常指的是Spring Framework,它是Spring生态系统的核心和基础。Spring Framework提供了一个控制反转(IOC)容器和面向切面编程(AOP)框架,以及事务管理、数据访问、MVC Web框架等核心功能。它是一个轻量级的、非侵入式的框架,旨在简化Java企业级应用的开发。
Spring Framework的主要特点
控制反转(Inversion of Control):Spring通过Ioc容器管理对象的生命周期和依赖关系,实现了控制反转。
依赖注入(Dependency Injection): 依赖注入使得组件之间的依赖关系由容器在运行时注入,降低了组件之间的耦合度。
Spring提供了AOP(Aspect Oriented Programming)的支持,允许开发者定义横切关注点,如日志、安全和事务管理,而不需要修改核心业务逻辑代码。
Spring提供了一套数据访问抽象层,用于简化数据库操作,如JdbcTemplate,JpaTemplate等。
Spring提供了声明式的事务管理机制,通过配置文件或注解来声明事务边界,而不是在代码中显式地管理事务。
Spring提供了一个完整的MVC(Model-View-Controller)框架,用于简化Web应用程序的开发。
Spring框架本身是非侵入式的,不需要实现特定的接口或继承特定的类。
Spring支持国际化,可以很容易地实现多语言支持。
Spring支持多种配置方式,包括XML配置、注解配置以及Java配置。
Spring Framework的核心模块及其依赖关系
1.Spring Core Container(核心容器)
- spring-core: 核心工具类,Spring其他模块的基础。
- spring-beans: 依赖spring-core,提供BeanFactory,管理Bean的创建和生命周期。
- spring-context: 依赖spring-core和spring-beans,提供ApplicationContext,扩展BeanFactory,增加国际化、事件传播、资源加载等支持。
- spring-expression: 依赖spring-core,提供Spring表达式语言(SpEL)。
2.Spring AOP(面向切面编程)
- spring-aop: 依赖spring-core、spring-beans、spring-context,提供AOP支持。
- spring-aspects: 集成AspectJ,AOP应用框架。
3.Spring Data Access/Integration(数据访问/集成)
- spring-jdbc: 依赖spring-core、spring-beans、spring-context,提供JDBC抽象层,简化JDBC操作。
- spring-tx: 依赖spring-core、spring-beans、spring-context,提供事务管理功能。
- spring-orm: 依赖spring-core、spring-beans、spring-context、spring-jdbc,提供对ORM框架的集成支持。
4.Spring Web
- spring-web: 依赖spring-core、spring-beans、spring-context,提供基本的Web功能。
- spring-webmvc: 依赖spring-core、spring-beans、spring-context、spring-web,提供MVC架构和Web应用的各种功能。
核心模块说明
- spring-core是最基础的模块,其他所有模块都依赖它。
- spring-beans和spring-context构成了Spring的核心容器,提供了IoC和依赖注入的功能。
- spring-aop、spring-jdbc、spring-tx、spring-orm是在核心容器基础上提供的高级功能模块。
- spring-web、spring-webmvc是用于Web开发的模块,依赖于核心容器和其他数据访问模块。
Spring Framework的版本
Spring Framework支持的版本
- 7.0.x将是下一代主要版本(2025年11月)。
- 6.2.x是即将推出的feature分支(2024年11月)。
- 6.1.x是截至2023年11月的主要生成线。
- 6.0.x是2022年11月新一代框架的开始,以JDK17和Jakarta EE 9为基准。开源支持已于2024年8月31日结束。
- 5.3.x是第5代的最后一个feature分支,在JDK8、JDK11、JDK17、JDK21和Java EE 8级别提供长期支持。开源支持已于2024年8月31日结束。
- 4.3.x已于2020年12月31日达到其官方EOL(end of life 生命周期终止)。该路线没有进一步的维护和安全补丁计划。
- 3.2.x已于2016年12月31达到其官方EOL(生命周期终止)。该路线没有进一步的维护和安全补丁计划。
JDK与Spring Framework的对应版本
Spring Framework版本 |
JDK版本 |
7.0.x |
JDK 17-27(预期) |
6.2.x |
JDK 17-25(预期) |
6.1.x |
JDK 17-23 |
6.0.x |
JDK 17-21 |
5.3.x |
JDK 8-21 |
Java/Jakarta EE与Spring Framework的对应版本
Spring Framework版本 |
Java/Jakarta EE |
7.0.x |
Jakarta EE 11(jakarta命名空间) |
6.2.x |
Jakarta EE 9-10(jakarta命名空间) |
6.1.x |
Jakarta EE 9-10(jakarta命名空间) |
6.0.x |
Jakarta EE 9-10(jakarta命名空间) |
5.3.x |
Java EE 7-8(javax命名空间) |
参考资料
https://github.com/spring-projects/spring-framework
https://spring.io/projects/spring-framework
https://docs.spring.io/spring-framework/reference/index.html
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!