Spring框架架构

这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能,请阅读Spring框架简介 。

总览

Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆绑在一起的。 各种弹簧组件作为独立模块提供。 这使我们可以灵活地使用所需的内容,而剩下的就剩下了。 例如,如果我们要使用Spring JMS模块,则无需将Spring Web Module添加到我们的项目中。 这使我们的应用重量轻且集中。

Spring框架

Spring建筑

让我们深入了解Spring Architecture(参考图),在本教程的后续部分中,我们将深入研究每个模块。 如图所示,Core是Spring框架的基础。 其他模块,例如Web,数据访问和其他模块集。 测试模块(也基于内核)是独立的,因为它与测试应用程序的弹簧支持组件有关。

核心容器

核心容器是Spring的心脏。 它包含一些基本框架类和工具。 整个Spring框架基于Core Container的顶部

Spring框架

核心容器模块

小费:
如果您是一个完整的新手。 核心容器是您首先要熟悉的东西。 如果您对此有所了解,则可以轻松选择任何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。

Spring框架

网络模块

让我们简要看一下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框架

资料存取模组

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重要的独立模块,可以将其视为杂类。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php中n12br,PHP常见字符串操作函数与用法总结

一、字符串的格式化1、字符串的格式化trim()函数可以去除字符串的开始位置和结束位置的空格,并将结果字符串返回,默认情况下去除的字符是换行符和回车符(\n和\r),水平和垂直制表符(\t和X0B)ltrim()函数只从字符的开始处(左边)去除空格rtrim()函数只从函数…

面向切面编程应用_应用面向方面的编程

面向切面编程应用1.引言 面向方面编程的主要目标是将跨领域关注点分离。 当我们谈论跨领域的关注时,我们指的是在我们的系统或应用程序中的多个地方使用的通用功能。 这些概念包括: 记录中 交易管理 错误处理 监控方式 安全 实现这种分离的方法是将…

centos 安装php扩展gd,linux(centos)下为php添加添加GD扩展

yum -y install libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel 安装依赖库yum -y install libjpeg-devel1.首先切换到php源码目录:/usr/local/php-5.6.29/ext/gd2.利用phpize生成gd扩展文件,/usr/local/php/bin/mipsel-linux-phpize, ls 或者 …

弹簧启动执行器教程

朋友您好,在本教程中,我们将学习弹簧执行器及其所有功能。 1.什么是弹簧执行器? 2.如何在Maven项目或Gradle项目中添加弹簧执行器? 3.创建一个具有Spring Actuator依赖项的Spring Boot项目。 4.使用弹簧执行器端点监视应用程序…

php xls 邮件,PHPMailer发送邮件

PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及图片附件,前提要设置好邮件服务器就能实现邮件发送功能。HTML首先我们先放置一个收件箱的输入框和一个发送邮件按钮:收件人:jQuery$(function()…

引导性GCP:带有Google Cloud Pub / Sub的Spring Cloud Stream

我最近在Sprint Central的工程博客上阅读了Josh Long的Bootiful GCP系列 ,特别喜欢关于使用Google Cloud的Pub / Sub的第四部分 。 我受到该系列的启发,同时我还在为我的一个新项目评估Spring Cloud Stream。 我以为,我会继续讨论乔希&#x…

jdbc和jdbc驱动_JDBC布尔兼容性列表

jdbc和jdbc驱动有趣的是,布尔类型只是在SQL标准后期才引入,即SQL:1999 。 即使在今天,并非所有数据库本身都支持BOOLEAN或BIT类型。 最重要的是,我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问…

IDE日志分析方法pt。 1个

介绍 我认为大多数软件工程师都了解日志的重要性。 它们已成为软件开发的一部分。 如果无法解决问题,我们尝试在日志中查找原因。 对于一些简单的情况,当错误阻止应用程序打开窗口时,这可能就足够了。 您可以在日志中找到问题,然后…

java运行构建期间出错_构建和运行Java 8支持

java运行构建期间出错尚未提供对Java 8的Eclipse支持。 如果要使用它,则必须构建它。 Eclipsepedia的JDT Core / Java8页面包含有关使用Eclipse Java开发工具 (JDT)中不断发展的Java 8支持源来设置开发环境的说明。 说明中缺少一些内容&#…

从Commons CLI迁移到picocli

最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄。 寻找具有最少样板代码的现代方法的应用可能对picocli感兴趣。 为什么要花麻烦的钱进行迁移,以及如何将基于Commons CLI的应用程序迁移到picocli&a…

QuickBooks和Sage数据导出器

许多中小企业都使用QuickBooks作为其会计模块。 同样,许多公司也使用Sage进行会计处理。 他们中的大多数人在需要从这些系统中导出数据时会遇到问题。 在线提供的许多连接器价格昂贵,无法满足确切的要求。 随附的是一些简短的代码段,这些代码…

php内容缓存输出,PHP使用缓存即时输出内容(output buffering)的方法

PHP使用缓存即时输出内容(output buffering)的方法PHP使用缓存即时输出内容(output buffering)的方法。分享给大家供大家参考。具体如下:$buffer ini_get(output_buffering);echo str_repeat( ,$buffer1); //防止浏览器缓存ob_end_flush(); //关闭缓存for( $i1; $i…

继承能够访问父类私有字段_在单元测试中访问私有字段

继承能够访问父类私有字段首先,让我大声说一下,您需要将代码设计为可测试的,以便通过公共方法测试私有字段。 但是,(“ buts”是人们仍在编程而不是计算机本身的原因,所以在这里很高兴)有时您想…

甲骨文函数初探

我非常高兴有机会通过Cloud Native Limited Availability Program来测试Oracle功能。 去年,当我上次尝试在Oracle Groundbreaker APAC巡回赛中在Oracle Cloud中运行无服务器功能时,有两种选择。 您可以在虚拟机中运行我自己的Fn服务器,也可以…

spring roo_使用Spring Roo进行概念验证

spring roo在Keyhole工作期间,我参与了许多项目,其中客户要求我们重写旧系统,同时保留其现有数据库。 有时,它有助于快速演示如何使用当前技术来简化开发,测试和维护其代码。 我发现可以创建一个快速示例(…

oracle虚拟机怎么装系统,Virtualbox怎么安装系统 VirtualBox虚拟机安装Win8系统教程 (3)...

三、对新建的虚拟机做重要的设定:1、在Oracle VM VirtualBox里面点击下刚才建好的虚拟机,然后点下上面的黄色图标“设置”,或者右键菜单里面点击设置也可以(快捷键是CtrlS)Oracle VM VirtualBox虚拟机设置2、在出来的设置页面里面&#xff0c…

oracle xe gentoo,Oracle在gentoo下安装

补充:解决ORACLE10G安装界面中文乱码问题,修改以下变量使安装界面为英文。export LC_CTYPEen_US.UTF-8以下为原文1.OS:Gentoo-linux-2.6.23-rc5Oracle:Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86下载地址:2.使用管理员账户建立Oracle用户…

JMetro 5.2版发布

再一次问好 JMetro的新更新刚刚发布。 添加了两种新的控件样式:“标题窗格”和“手风琴”。 此外,还对现有样式和错误修复进行了调整。 最终,JMetro现在也可以通过Maven Central获得。 在本文中,我将详细介绍刚刚发布的JMetro 5…

matlab处理svm的数据,SVM-GUI 使用支持向量机(SVM)算法进行处理数据,提取特征参数,并通过MATLAB界面显示相关数 238万源代码下载- www.pudn.com...

文件名称: SVM-GUI下载收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 231 KB上传时间: 2014-05-13下载次数: 13提 供 者: 幽灵详细说明:使用支持向量机(SVM)算法进行处理数据,提取特征参数,并通过MATLAB界面显示相关数据-Using Support…

mockito_Eclipse的Mockito模板

mockito有时候,我想念树林里的树木-那是一段令人不安的长时间。 我最近才再次意识到这一点,在无数次中键入了一个更详细的模仿表达式之一。 有问题的语句是一个doAnswer(Answer)构造,使用涉及到的静态导入和泛型代码进行编码总是很麻烦。 尽…