目录
[1. Servlet 与 Spring 的关系](#1. Servlet 与 Spring 的关系)
[2. Spring 框架介绍](#2. Spring 框架介绍)
[Spring 框架的起源与发展](#Spring 框架的起源与发展)
[Spring 框架的核心特性](#Spring 框架的核心特性)
[Spring 主要模块介绍](#Spring 主要模块介绍)
[核心模块(Core Container)](#核心模块(Core Container))
[数据访问与集成模块(Data Access/Integration)](#数据访问与集成模块(Data Access/Integration))
[Web 模块(Web)](#Web 模块(Web))
[AOP 模块(Aspect Oriented Programming)](#AOP 模块(Aspect Oriented Programming))
[Spring 框架的优势与应用场景](#Spring 框架的优势与应用场景)
从现在开始 都是工作中用的东西了
1. Servlet 与 Spring 的关系
Servlet 是 Spring MVC 的基础 :Spring MVC 是构建在 Servlet 之上的一个 Web 框架,它使用了 Servlet 来处理 HTTP 请求。Spring MVC 中的 DispatcherServlet
本质上是一个 Servlet,它拦截所有请求,然后根据配置和注解,分发到不同的控制器(Controller)。
简化 Servlet 开发:Spring 提供了对 Servlet 的高层封装,使开发者可以专注于业务逻辑,而不用处理 Servlet API 级别的细节。Spring MVC 提供了注解式的请求映射和依赖注入等功能,极大地简化了 Web 应用的开发流程。
统一管理 Bean:Spring 通过 IOC 容器统一管理 Bean,包括 Servlet 和其他组件,简化了应用配置,增加了可扩展性。
2. Spring 框架介绍
Spring 框架的起源与发展
Spring 框架由 Rod Johnson 在 2002 年首次发布,起初是为了解决 Java EE 企业开发中的复杂性问题。Rod Johnson 在其书《Expert One-on-One J2EE Design and Development》中提出了简化 Java 企业级开发的理念,并提供了开源框架 Spring 的早期版本。Spring 的发布为开发者带来了轻量级的替代方案,使企业级 Java 开发更具模块化和灵活性。
随着时间的推移,Spring 不断增加新特性和模块,支持更广泛的企业级应用需求。从早期的 IOC(控制反转)和 AOP(面向切面编程)到后来的 Spring MVC、Spring Data、Spring Security 等模块,Spring 成为一个强大的 Java 企业应用开发框架。后来,Spring Boot 和 Spring Cloud 的发布更进一步推动了 Spring 的流行,特别是在微服务架构和云原生应用开发中,Spring 成为主流选择。
-
一定要把 Servlet 当作基础概念来学习,而不必直接用它实现具体方案,因为它已逐渐被更高层的框架所取代。
Spring 框架的核心特性
-
IOC(控制反转):通过依赖注入(DI),Spring 管理对象的依赖关系,使对象之间解耦,从而更易于测试和扩展。
-
AOP(面向切面编程):Spring 支持 AOP,可以将日志、事务等横切关注点与业务逻辑分离,提升代码的可维护性。
-
事务管理:Spring 提供声明式事务管理,无需手动编写事务代码,也支持复杂的分布式事务管理。
-
丰富的模块化设计:Spring 包含多个功能模块(如 Spring MVC、Spring Data、Spring Security 等),能够满足各类企业应用开发需求。
-
高可扩展性和集成性:Spring 可以与多种数据访问技术、消息中间件、Web 服务和其他框架(如 Hibernate、MyBatis)集成。
-
轻量级和非侵入性:Spring 对 Java 类无特殊要求,几乎不会干扰应用原有代码结构,因此迁移和升级相对容易。
Spring 主要模块介绍
-
Spring 框架包含多个模块,开发者可以根据需求选择性地使用。
##### 核心模块(Core Container)
* 核心容器模块是 Spring 的基础,包含支持依赖注入(DI)和控制反转(IOC)的功能。
* **Spring Core** :提供依赖注入机制,核心类如 `BeanFactory` 和 `ApplicationContext`。
* **Spring Context**:基于 Spring Core 提供了更高级的 IOC 容器功能,例如国际化、事件传播、资源管理等。
* **Spring Expression Language(SpEL)**:允许在 XML 配置或注解中使用表达式,对运行时值进行操作。
##### 数据访问与集成模块(Data Access/Integration)
* **JDBC** :简化了 Java 数据库连接的编程,提供 `JdbcTemplate` 等工具类处理数据操作。
* **ORM**:支持与 ORM 框架的集成(如 Hibernate、JPA、MyBatis),提供事务管理和一致的编程接口。
* **事务管理**:提供声明式事务和编程式事务管理,简化分布式和单体事务处理。
* **消息传递(Messaging)**:支持 JMS、AMQP(如 RabbitMQ)等消息传递技术,用于系统内部和系统间消息交互。
##### Web 模块(Web)
* Spring Web 模块专注于构建 Web 应用,特别是基于 Servlet 的应用。
* **Spring MVC** :提供一个强大的 MVC 框架,使用 `DispatcherServlet` 处理请求,通过注解配置控制器、视图和模型绑定。
* **WebSocket**:支持 WebSocket 通信,用于实时 Web 应用开发。
##### AOP 模块(Aspect Oriented Programming)
* Spring 的 AOP 模块使开发者可以把日志记录、事务管理等横切关注点从业务逻辑中分离出来。
* **AOP 支持**:支持声明式 AOP,通过注解和 XML 配置定义切入点和通知。
* **AspectJ 集成**:支持使用 AspectJ 编写 AOP 切面,AspectJ 是 Java 中功能丰富的 AOP 框架。
##### 测试模块(Test)
* Spring Test 模块提供了丰富的测试支持,便于开发者对 Spring 应用进行单元测试和集成测试。
* **单元测试支持** :支持通过 `@ContextConfiguration` 加载 Spring 配置,简化基于 Spring 的单元测试。
* **Mock 测试工具** :提供 `MockMvc`,用于模拟 HTTP 请求,测试 Web 层控制器。
* **集成测试** :支持通过 `@SpringBootTest` 在 Spring Boot 项目中进行完整的集成测试。
Spring 框架的优势与应用场景
-
优势
-
高度解耦:IOC 和 DI 使得类之间解耦,业务代码的逻辑与配置分离。
-
可扩展性强:Spring 提供丰富的配置方式(XML、注解、Java 配置类),灵活且易扩展。
-
横切关注点管理:通过 AOP 简化了日志记录、事务管理、权限控制等横切关注点的处理。
-
丰富的生态系统:包括 Spring Boot、Spring Data、Spring Security 等模块,可以构建各种规模的应用。
-
高兼容性:与主流技术和框架(如 JPA、MyBatis、Hibernate)无缝集成,能够在现有项目中逐步采用 Spring。
-
-
应用场景
-
传统单体应用:Spring 是单体应用开发的理想选择,能有效管理复杂的业务逻辑和数据交互。
-
微服务架构:使用 Spring Boot 和 Spring Cloud,可以快速构建和管理微服务系统。
-
RESTful API 开发:Spring MVC 提供强大的 REST 支持,使开发 RESTful 接口便捷。
-
响应式编程:通过 WebFlux,适合高并发、低延迟的实时应用,如在线聊天、股票行情推送等场景。
-