这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能,请阅读Spring框架简介 。
总览
Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆绑在一起的。 各种弹簧组件作为独立模块提供。 这使我们可以灵活地使用所需的内容,而剩下的就剩下了。 例如,如果我们要使用Spring JMS模块,则无需将Spring Web Module添加到我们的项目中。 这使我们的应用重量轻且集中。
让我们深入了解Spring Architecture(参考图),在本教程的后续部分中,我们将深入研究每个模块。 如图所示,Core是Spring框架的基础。 其他模块,例如Web,数据访问和其他模块集。 测试模块(也基于内核)是独立的,因为它与测试应用程序的弹簧支持组件有关。
核心容器
核心容器是Spring的心脏。 它包含一些基本框架类和工具。 整个Spring框架基于Core Container的顶部。
小费:
如果您是一个完整的新手。 核心容器是您首先要熟悉的东西。 如果您对此有所了解,则可以轻松选择任何Spring模块。
弹簧芯
核心模块包含基本的Spring Framework类,包括依赖注入(DI)和控制反转(IOC)。 Spring Core可在Spring Core Repo中获得 。 无论您要构建哪种类型的Spring应用程序,您都将始终对Spring Core具有直接或间接的依赖性。
Spring Bean
Spring Bean模块管理Bean的生命周期。 在Spring Framework中,Bean是在Spring中注册的任何Java类,并且Spring管理这些bean类。 Spring Bean模块具有一个Bean Factory ,该工厂创建Bean实例,解析Bean与Bean的依赖关系,并根据名称或类型自动装配Bean。
可以在Spring Beans Repo上找到Spring Bean模块。
春天语境
我们了解到,Spring Bean负责管理Spring Bean。 这些Spring Bean在称为Context的上下文中定义。 在Spring,每个对象都是一个Bean,让它成为配置条目或用户定义的类(例如Employee)。 所有这些bean,它们的构造函数或工厂方法以及相关性都在Context中定义。 通过Context访问Bean。
在大多数情况下,Spring Context是在Spring Application启动时启动的,因此称为Application Context。 链接到Spring Context Repo 。
SpEL
SpEL代表Spring Expression Language ,它是功能强大的完整表达语言。 它用于在运行时将表达式解析为值。 SpEL可以在运行时查询对象图,并且可以在基于XML或基于注释的Bean定义和Bean配置中使用。 “运行时”一词在这里非常重要,因为可以根据运行时配置或其他表达式的值来评估表达式。
可以在Spring Expression Language Repo中找到 。
Spring网
从名称本身就很明显, Spring Web组件用于构建Web应用程序。 使用Spring Web模块,我们可以构建完整的MVC应用程序,拦截器,Web服务,Portlet。
让我们简要看一下Web组件。
Spring Web和Servlet
Spring Web和Servlet提供了许多用于构建Web集成的功能。 在以上部分之一中,我们看到了什么是应用程序上下文。 Spring Web提供了类似于上下文的Web应用程序上下文。 Spring Web提供了servlet的抽象以及控制反转(IOC)。
可以在Spring Web Repo上找到。
Spring Web还有另外一个组件,那就是Spring MVC。 Spring MVC提供了一种用于构建基于Model View Controller的Web应用程序的机制。 Spring MVC具有“视图和操作”的概念。 视图表示用户界面或使用者,而操作是服务于Web请求的组件。
可以在Spring Web MVC Repo中找到 。
Spring Web套接字
Spring Web Sockets支持构建Web Sockets。 Web套接字是Web应用程序中服务和使用者之间的一种隧道。 在HTTP连接中,客户端必须在服务器上轮询是否有更新。 使用Web套接字,它们之间都存在双向通信套接字,因此,即使服务器也可以将消息直接推送到客户端。
可以在Spring Web Sockets Repo中找到 。
Spring Web Portlet
Spring Web Portlet支持构建Web Poerlet。 Portlet是可插拔的用户界面软件组件,可以在Web门户中进行管理和显示。 换句话说,它是一种在单个用户界面上显示多个应用程序(portlet)的用户界面的机制。 通常,这些portlet是可插拔和可安排的。
可以在Spring Web Portlet Repo中找到 。
Spring数据访问
Spring Data Access是一组模块,用于访问各种格式的数据,包括数据库,消息传递和XML。 让我们简要介绍一下这些模块
Spring JDBC
Spring JDBC通过Java JDBC API提供抽象。 当我们需要从数据库访问数据时,通常需要处理语句,查询,结果集,尤其是异常。 Spring JDBC抽象消除了所有这些复杂性,并提供了JdbcTemplate来轻松访问数据。 它还提供了迭代和映射结果集的方法。
可以在Spring JDBC Repo中找到。
SpringORM
Spring ORM提供了与各种ORM实现集成的支持。 ORM代表对象关系映射框架,其中数据被逐字段映射到Java Object。 使用ORM框架,可以用数据填充纯Java对象,并将其传递到ORM API,以纯Java对象的形式存储和类似地检索数据。 Spring提供了对流行的ORM框架(如Hibernate,JDO和JPA)的支持。
可以在Spring Object / Relational Mapping Repo找到该驱动程序 。
SpringJMS
JMS代表Java Messaging Service,它以消息的形式定义发布者和订阅者通信的规范。 Spring JMS提供了对各种JMS实现(例如ActiveMQ和RabbitMQ)的抽象。
可以在Spring JMS Repo中找到。
SpringOXM
Spring OXM提供了Java OXM实现的抽象。 Java OXM(对象XML编组)规范定义了以XML形式传输和访问数据的方式。 OXM有各种实现,例如JAXB和XStream。
可以在Spring Object / XML Marshalling Repo上找到Cab。
Spring交易
Spring Transactions Management API提供了管理数据对象和数据库事务的统一方法。 Transaction API支持程序化和声明性事务管理。
可以在Spring Transaction Repo中找到。
杂项模块
现在我们到达了教程的最后一部分。 在本节中,我们将学习Spring重要的独立模块,可以将其视为杂类。
SpringAOP
Spring AOP是面向方面编程的实现。 方面是对象需要执行的任何辅助任务。 每个对象都是Java的专门职责,除此之外,它可能还必须做一些次要的事情,例如日志记录或异常处理。 面向方面的编程提供了一种机制,可以从对象中消除此类次要责任,并将其赋予代理对象,从而使原始对象加倍。
可以在Spring AOP Repo中找到。
春天的方面
我们已经了解了什么是面向方面的编程。 Spring Aspects提供了与其他面向方面的编程实现(如AspecJ)集成的统一方法。
可以在Spring Aspects Repo中找到。
弹簧仪表
Spring Instrumentation模块为类检测提供支持。 该工具用于监视应用程序的性能。 它监视各种对象以诊断应用程序问题并记录它们。
可以在Spring Instrument Repo找到。
Spring信息
Spring Messaging提供了与消息传递系统集成的支持。 该模块提供了与各种消息传递服务进行交互的简化且统一的方式。
可以在Spring Messaging Repo中找到。
摘要
在本文中,我们研究了Spring Framework Architecture。 Spring是一个具有多个模块的巨大框架。 核心容器是Spring中所有事物的骨干,所有其他模块都依赖于核心。 除了核心,我们还研究了Spring Web,Spring Data Access和一些其他模块。
在接下来的部分中,我们将继续探索Spring Framework。 敬请关注!
翻译自: https://www.javacodegeeks.com/2019/02/spring-framework-architecture.html