十一:java web(3)-- Spring框架 -- Spring简介

目录

[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))

测试模块(Test)

[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 成为主流选择。

  1. 一定要把 Servlet 当作基础概念来学习,而不必直接用它实现具体方案,因为它已逐渐被更高层的框架所取代。

Spring 框架的核心特性

  1. IOC(控制反转):通过依赖注入(DI),Spring 管理对象的依赖关系,使对象之间解耦,从而更易于测试和扩展。

  2. AOP(面向切面编程):Spring 支持 AOP,可以将日志、事务等横切关注点与业务逻辑分离,提升代码的可维护性。

  3. 事务管理:Spring 提供声明式事务管理,无需手动编写事务代码,也支持复杂的分布式事务管理。

  4. 丰富的模块化设计:Spring 包含多个功能模块(如 Spring MVC、Spring Data、Spring Security 等),能够满足各类企业应用开发需求。

  5. 高可扩展性和集成性:Spring 可以与多种数据访问技术、消息中间件、Web 服务和其他框架(如 Hibernate、MyBatis)集成。

  6. 轻量级和非侵入性: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,适合高并发、低延迟的实时应用,如在线聊天、股票行情推送等场景。

相关推荐
GIS开发特训营3 分钟前
Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍
前端·vue.js·前端框架·gis开发·webgis·三维gis
禁默22 分钟前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Cachel wood29 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
学代码的小前端30 分钟前
0基础学前端-----CSS DAY9
前端·css
Code哈哈笑31 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
gb421528734 分钟前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
joan_8534 分钟前
layui表格templet图片渲染--模板字符串和字符串拼接
前端·javascript·layui
程序猿进阶35 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
zfoo-framework42 分钟前
【jenkins插件】
java