这是对SpringFramework架构的概述。了解Spring框架的各个组件是如何组织和相互关联的。如果您想了解什么是SpringFramework及其特性,请阅读SpringFramework简介。概述Spring是一个模块化框架。它不是一个包或一组模块。各种弹簧组件可作为单独的模块提供。这使我们可以灵活地使用我们需要的东西,剩下的就不用管了。例如,如果我们要使用SpringJMS模块,我们不需要在我们的项目中添加SpringWeb模块。这使我们的应用程序保持轻量级和专注。Spring架构让我们从较高的层次看一下Spring架构(参考图),在本教程的后续部分中,我们将深入研究这些模块中的每一个。如图所示,Core是SpringFramework的基础。其他模块,例如Web、数据访问和其他模块集。测试模块(也基于核心)是独立的,因为它涉及测试应用程序的弹簧加载组件。核心容器核心容器是Spring的心脏。它包含一些基本的框架类和工具。整个SpringFramework是基于CoreContainer的。CoreContainerModule提示:如果你是一个完全的新手。CoreContainer是您首先应该熟悉的东西。如果你很好地理解这一点,你可以轻松地选择任何SpringModule。SpringCore核心模块包含基本的SpringFramework类,包括依赖注入(DI)和控制反转(IOC)。SpringCore在SpringCoreRepo中可用。无论您正在构建什么类型的Spring应用程序,您将始终直接或间接依赖于SpringCore。SpringBean模块管理bean的生命周期。在Spring框架中,bean是注册到Spring的任何Java类,Spring管理这些bean类。SpringBean模块有一个BeanFactory,它创建bean实例,解析bean到bean的依赖关系,并根据名称或类型自动装配bean。可以在SpringBeansRepo中找到SpringBeans模块。SpringContextS我们了解到SpringBean负责管理SpringBean。这些Springbean在称为Context的上下文中定义。在Spring中,每个对象都是一个bean,无论是配置条目还是用户定义的类(例如Employee)。所有这些bean,它们的构造函数或工厂方法和依赖项都在Context中定义。通过上下文访问Bean。在大多数情况下,Spring上下文在Spring应用程序启动时启动,因此得名应用程序上下文。链接到Spring上下文回购。拼音SpEL全称SpringExpressionLanguage,是一种功能强大的完整表达式语言。它用于在运行时将表达式解析为值。SpEL可以在运行时查询对象图,并且可以用于XML或基于注解的bean定义和bean配置。运行时这个词在这里非常重要,因为可以根据运行时配置或其他表达式的值来评估表达式。它可以在SpringExpressionLanguageRepo中找到。SpringWeb顾名思义,SpringWebComponents用于构建Web应用程序。使用SpringWeb模块,我们可以构建完整的MVC应用程序、拦截器、Web服务、Portlet。让我们简单了解一下Web组件。SpringWeb和ServletsSpringWeb和Servlets提供了许多用于构建Web集成的特性。我们在上一节中看到什么是应用程序上下文。SpringWeb提供了一个类似于context的webapplicationcontext。SpringWeb为servlet和控制反转(IOC)提供抽象。它可以在SpringWebRepo中找到。SpringWeb还有一个组件,就是SpringMVC。SpringMVC提供了一种用于构建基于模型-视图-控制器的Web应用程序的机制。SpringMVC有View和Actions的概念。视图代表用户界面或消费者,而操作是服务网络请求的组件。它可以在SpringWebMVCRepo中找到。SpringWebSocketsSpringWebSockets为构建WebSockets提供支持。Web套接字是Web应用程序中服务和消费者之间的一种隧道。在HTTP连接中,客户端必须轮询服务器以获取任何更新。使用WebSockets在它们之间有一个双向通信套接字,因此即使是服务器也可以直接向客户端推送消息。它可以在SpringWebSocketsRepo中找到。SpringWebPortletsSpringWebPortlets支持构建webpoerlets。Portlet是可插入的用户界面软件组件,在Web门户中进行管理和显示。换句话说,它是一种在单个用户界面上显示多个应用程序(portlet)的用户界面的机制。通常这些portlet是可插入和可安排的。它可以在SpringWebPortletRepo中找到。SpringDataAccessSpringDataAccess是一组模块,用于访问各种格式的数据,包括数据库、消息传递和XML。让我们简要概述一下这些模块。SpringJDBCSpringJDBC提供了对JavaJDBCAPI的抽象。当我们需要访问数据库中的数据时,通常需要处理语句、查询、结果集,尤其是异常。SpringJDBC抽象消除了所有这些复杂性,并提供了一个JdbcTemplate以便于访问数据。它还提供了迭代和映射结果集的方法。它可以在SpringJDBCRepo中找到。SpringORMSpringORM支持与各种ORM实现的集成。ORM代表对象关系映射框架,其中数据逐字段映射到Java对象。使用ORM框架,普通Java对象可以填充数据并传递给ORMAPI以存储和类似地检索数据作为普通Java对象。Spring为Hibernate、JDO和JPA等流行的ORM框架提供支持。Cab可以在SpringObject/RelationalMappingRepo中找到。SpringJMSJMS全称JavaMessagingService,它定义了一种以消息的形式进行发布者和订阅者通信的规范。SpringJMS提供了对各种JMS实现(例如ActiveMQ和RabbitMQ)的抽象。它可以在SpringJMSRepo中找到。SpringOXMSpringOXM提供了对JavaOXM实现的抽象。JavaOXM(对象XML编组)规范定义了以XML形式传输和访问数据的方式。OXM有多种实现,例如JAXB和XStream。Cab可以在SpringObject/XMLMarshallingRepo中找到。SpringTransactionsSpringTransactionsManagementAPI提供了一种统一的方式来管理数据对象和数据库事务。TransactionAPI支持编程式和声明式事务管理。它可以在SpringTransactionRepo中找到。杂项模块现在我们来到了本教程的最后一部分。本节我们将学习Spring重要的独立模块,可以算是杂项类。SpringAOPSpringAOP是面向切面编程的一种实现。方面是对象需要执行的任何次要任务。Java中的每个对象都有专门的职责,除此之外,它可能还需要做一些小事,例如日志记录或异常处理。面向方面的编程提供了一种机制,可以将这些次要职责从对象中取出,并将它们分配给代理对象,代理对象是原始对象的两倍。它可以在SpringAOPRepo中找到。SpringAspects我们已经了解了什么是面向方面的编程。SpringAspects提供了一种与其他面向方面的编程实现(例如AspecJ)集成的统一方式。它可以在SpringAspectsRepo中找到。SpringInstrumentation模块提供对类检测的支持。该工具用于监视应用程序的性能。它监视各种对象以诊断应用程序问题并记录它们。它可以在SpringInstrumentRepo中找到。SpringMessagesSpringMessaging支持与消息系统的集成。该模块提供了一种与各种消息服务交互的简化和统一的方式。它可以在SpringMessagingRepo中找到。总结在本文中,我们了解了Spring框架架构。Spring是一个包含多个模块的巨大框架。CoreContainer是Spring中一切的支柱,所有其他模块都依赖于Core。除了核心,我们还研究了SpringWeb、SpringDataAccess和一些杂项模块。
