高级技术猿:Spring 框架架构

开发 架构
Spring 是一个模块化框架。它不是一个包或多个模块的捆绑包。各种弹簧组件作为独立模块提供。这使我们可以灵活地使用我们需要的东西并留下其余的东西。

这是Spring 框架体系结构的概述。了解 Spring Framework 的各个组件如何组织和相互关联。如果您想了解什么是 Spring 框架及其特性,请阅读Spring 框架简介。

概述

Spring 是一个模块化框架。它不是一个包或多个模块的捆绑包。各种弹簧组件作为独立模块提供。这使我们可以灵活地使用我们需要的东西并留下其余的东西。例如,如果我们想使用 Spring JMS 模块,我们不需要将 Spring Web 模块添加到我们的项目中。这使我们的应用程序重量轻且集中。

春天架构

让我们从高级别的角度看一下 Spring 架构(参考图表),在本教程的后续部分中,我们将深入了解这些模块中的每一个。如图所示,Core 是 Spring Framework 的基础。其他模块,如 Web、数据访问和其他模块集。测试模块(也基于核心)是独立的,因为它与测试应用程序的弹簧支撑组件有关。

核心容器

核心容器是 Spring的核心。它包含一些基本框架类和工具。整个 Spring Framework 都是基于Core Container 之上的。

核心容器模块

提示:

如果你是一个完整的新手。Core Container 是您首先要熟悉的东西。如果你很好地理解了这一点,你可以轻松地选择任何 Spring Module。

弹簧芯

Core模块包含基本的 Spring Framework 类,包括依赖注入 (DI) 和控制反转 (IOC)。Spring Core 可在 Spring Core Repo中获得。无论您正在构建哪种类型的 Spring 应用程序,您都将始终对 Spring Core 具有直接或间接的依赖关系。

春豆

Spring Bean模块管理 bean 的生命周期。在 Spring 框架中,Bean 是在 Spring 中注册的任何 Java 类,Spring 管理这些 bean 类。Spring Bean 模块有一个Bean Factory,它创建 bean 实例,解析 bean 到 bean 的依赖关系,并根据名称或类型自动连接 bean。

Spring Bean 模块可以在Spring Beans Repo中找到。

弹簧上下文S

我们了解到 Spring Bean 负责管理 Spring Bean。这些 Spring Bean 在称为 Context 的上下文中定义。在 Spring 中,每个对象都是一个 Bean,让它成为一个配置条目或一个用户定义的类(例如 Employee)。所有此类 bean、它们的构造函数或工厂方法和依赖项都在 Context 中定义。bean 通过上下文访问。

大多数情况下,Spring 上下文在 Spring 应用程序启动时启动,因此称为应用程序上下文。链接到Spring Context Repo。

拼音

SpEL 代表Spring Expression Language,它是一种强大的完整表达语言。它用于在运行时将表达式解析为值。SpEL 可以在运行时查询对象图,并且可以在基于 XML 或注释的 Bean 定义和 Bean 配置中使用。运行时这个词在这里非常重要,因为可以根据运行时配置或其他表达式的值来评估表达式。

可以在 Spring Expression Language Repo中找到。

春季网络

从它本身的名称可以很明显地看出,Spring Web组件用于构建 Web 应用程序。使用 Spring Web 模块,我们可以构建完整的 MVC 应用程序、拦截器、Web 服务、Portlet。

让我们简要了解一下 Web 组件。

Spring Web 和 Servlet

Spring Web 和 Servlets 提供了许多用于构建 Web 集成的特性。我们在上面的一节中看到了什么是应用程序上下文。Spring Web 提供了一个与上下文类似的 Web 应用程序上下文。Spring Web 为 servlet 和控制反转 (IOC) 提供了抽象。

可以在Spring Web Repo中找到。

Spring Web 还有一个组件,那就是 Spring MVC。Spring MVC 提供了一种用于构建基于模型视图控制器的 Web 应用程序的机制。Spring MVC 有 View 和 Actions 的概念。Views 代表用户界面或消费者,Action 是服务 Web 请求的组件。

可以在Spring Web MVC Repo中找到。

Spring Web 套接字

Spring Web Sockets 提供对构建 Web Sockets 的支持。Web Sockets 是 Web 应用程序中服务和消费者之间的一种隧道。在 HTTP 连接中,客户端必须在服务器上轮询任何更新。使用 Web Sockets 在它们之间有一个双向通信套接字,因此即使是服务器也可以直接将消息推送到客户端。

可以在Spring Web Sockets Repo中找到。

Spring Web Portlet

Spring Web Portlets支持构建 web poerlets。Portlet 是可插入的用户界面软件组件,在 Web 门户中进行管理和显示。换句话说,它是一种在单个用户界面上显示多个应用程序(portlet)的用户界面的机制。通常这些portlet 是可插入和可排列的。

可以在Spring Web Portlet Repo中找到。

春季数据访问

Spring Data Access是一组模块,用于访问各种格式的数据,包括数据库、消息传递和 XML。让我们对模块进行简要概述。

弹簧 JDBC

Spring JDBC提供了对 Java JDBC API的抽象。当我们需要访问数据库中的数据时,我们通常需要处理语句、查询、结果集,尤其是异常。Spring JDBC 抽象,消除了所有这些复杂性,并提供JdbcTemplate来轻松访问数据。它还提供了迭代和映射结果集的方法。

可以在Spring JDBC Repo中找到。

弹簧ORM

Spring ORM提供与各种 ORM 实现集成的支持。ORM 代表对象关系映射框架,其中数据逐个字段映射到 Java 对象。使用 ORM 框架,可以用数据填充纯 Java 对象并传递给 ORM API 以存储和类似地以纯 Java 对象的形式检索数据。Spring 为 Hibernate、JDO 和 JPA 等流行的 ORM 框架提供支持。

可在Spring Object/Relational Mapping Repo中找到 Cab 。

弹簧 JMS

JMS 代表 Java Messaging Service,它以消息的形式定义了发布者和订阅者通信的规范。Spring JMS 提供了对各种 JMS 实现(如 ActiveMQ 和 RabbitMQ)的抽象。

可以在Spring JMS Repo中找到。

弹簧OXM

Spring OXM提供了对 Java OXM 实现的抽象。Java OXM(Object XML Marshalling)规范定义了以 XML 形式传输和访问数据的方式。OXM 有多种实现,例如 JAXB 和 XStream。

可在Spring Object/XML Marshalling Repo中找到 Cab 。

春季交易

Spring Transactions Management API 提供了管理数据对象和数据库事务的统一方式。Transaction API 支持编程和声明式事务管理。

可以在Spring Transaction Repo中找到。

杂项模块

现在我们已经到了教程的最后一部分。在本节中,我们将了解 Spring 重要的独立模块,它们可以被视为杂项类别。

春季AOP

Spring AOP是面向切面编程的一种实现。Aspect 是对象需要执行的任何次要任务。每个对象是 Java 都有一个专门的职责,除此之外它可能需要做一些次要的事情,比如日志记录或异常处理。面向方面的编程提供了一种机制,用于将这些次要职责从对象中取出,并将它们赋予使原始对象加倍的代理对象。

可以在Spring AOP Repo中找到。

春季方面

我们已经了解了什么是面向方面的编程。Spring Aspects 提供了一种与其他面向方面编程实现(如 AspecJ)集成的统一方式。

可以在Spring Aspects Repo中找到。

弹簧仪表

Spring Instrumentation模块为类检测提供支持。该仪器用于监视应用程序的性能。它监视各种对象以诊断应用程序问题并记录它们。

可以在Spring Instrument Repo中找到。

春季消息

Spring Messaging提供与消息系统集成的支持。该模块提供了与各种消息传递服务交互的简化和统一的方式。

可以在Spring Messaging Repo中找到。

概括

在本文中,我们学习了 Spring 框架架构。Spring 是一个具有多个模块的巨大框架。Core Container 是 Spring 中一切的支柱,所有其他模块都依赖于 Core。除了核心,我们还查看了 Spring Web、Spring Data Access 和一些杂项模块。

责任编辑:姜华 来源: 今日头条
相关推荐

2009-06-19 11:28:45

2009-06-19 11:43:59

Spring MVC框

2014-08-06 10:39:12

程序员

2022-06-07 07:58:45

SpringSpring AOP

2023-06-26 08:42:18

Spring类型Resource

2022-05-30 09:32:07

Spring容器

2009-06-18 14:26:51

2009-06-19 14:49:43

Spring框架

2022-06-08 08:04:28

Springservicerepository

2009-06-19 09:52:46

Acegi安全框架Spring框架

2024-01-02 08:18:41

2022-11-25 07:59:02

SpringJava

2009-09-29 10:00:40

Spring AOP框

2009-06-19 17:17:40

Spring框架Java

2018-10-09 15:00:43

Hadoop分布式架构

2022-05-27 08:25:55

容器Spring

2020-01-21 08:54:46

应用架构Domain

2023-10-30 07:56:46

Spring缓存

2012-09-18 16:54:38

开发技术周刊

2017-01-05 15:30:59

开发者故事
点赞
收藏

51CTO技术栈公众号