Spring概述笔记
从Spring Framework 6.0开始,Spring需要Java 17+。
术语 “Spring” 在不同的语境中意味着不同的东西。它可以用来指代Spring框架项目本身,它是一切的开始。随着时间的推移,其他Spring项目也被建立在Spring框架之上。大多数时候,当人们说 “Spring” 时,他们指的是整个项目家族(全家桶)。这个参考文档的重点是基础:Spring框架本身。
Spring 框架被划分为多个模块。应用程序可以选择他们需要的模块。core 是核心容器的模块,包括一个配置模型和一个依赖注入机制。除此之外,Spring框架还为不同的应用架构提供了基础支持,包括消息传递、事务性数据和持久性以及Web。它还包括基于Servlet的 Spring MVC Web 框架,以及并行的Spring WebFlux 响应式 web 框架。
关于模块的说明。Spring框架的jar允许部署到JDK 9的模块路径(”Jigsaw”)。为了在支持Jigsaw的应用程序中使用,Spring Framework 5的jar带有 “Automatic-Module-Name” 清单项,它定义了独立于jar artifact 名称的稳定的语言级模块名称(”spring.core”、”spring.context” 等)(jar遵循相同的命名模式,以”-“代替”.”,例如 “spring-core” 和 “spring-context”)。当然,Spring框架的jar在JDK 8和9+的classpath上都保持正常工作。
作为对早期 J2EE 规范的复杂性的回应,Spring于2003年诞生了。虽然有些人认为Java EE及其现代的继任者Jakarta EE与Spring有竞争关系,但事实上它们是互补的。Spring编程模型并不拥抱Jakarta EE平台规范;相反,它与从传统的EE伞中精心挑选的个别规范进行整合。
Spring 与 J2EE(Java 2 Platform, Enterprise Edition)密切相关,主要体现在以下几个方面:
1. 背景与目的
- J2EE:由 Sun Microsystems 推出,旨在为企业级应用提供标准化的开发平台,包含 Servlet、JSP、EJB 等技术。
- Spring:由 Rod Johnson 创建,目的是简化 J2EE 开发,解决其复杂性问题,提供更轻量、灵活的替代方案。
2. 依赖关系
- Spring 依赖 J2EE 的某些核心组件,如 Servlet API 和 JTA,但它通过抽象层简化了这些技术的使用。
3. 功能对比
- J2EE:提供全面的企业级功能,如事务管理、安全性和分布式计算,但配置复杂。
- Spring:通过依赖注入和面向切面编程等机制,简化了企业级应用的开发,提供了轻量级的替代方案。
4. 模块化设计
- Spring 采用模块化设计,开发者可以根据需求选择使用特定模块,而不必引入整个框架。
5. 集成与扩展
- Spring 能与 J2EE 技术(如 EJB、JMS、JPA)无缝集成,并支持与其他框架(如 Hibernate、Struts)的整合。
6. Spring 的优势
- 简化开发:通过依赖注入和 AOP 减少样板代码。
- 轻量级:相比 J2EE,Spring 更轻量,启动更快。
- 灵活性:支持多种配置方式(XML、注解、Java 配置)。
- 测试友好:易于单元测试和集成测试。
7. Spring 与 J2EE 的演变
- J2EE 演变为 Java EE,后由 Eclipse 基金会接管并更名为 Jakarta EE。
- Spring 持续发展,Spring Boot 进一步简化了企业级应用的开发。
总结
Spring 是对 J2EE 的补充和简化,提供了更轻量、灵活的开发方式,同时能与 J2EE 技术无缝集成。随着 Spring 的演进,它已成为企业级 Java 开发的主流选择之一。