数仓建模维度建模理论知识

0. 思维导图

在这里插入图片描述

第 1 章 数据仓库概述

1.1 数据仓库概述

  数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。

1.2 数据仓库核心架构

在这里插入图片描述

第 2 章 数据仓库建模概述

2.1 数据仓库建模的意义

  数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。

  • 高性能:良好的数据模型能够帮助我们快速查询所需要的数据。
  • 低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算基本。
  • 高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。
  • 高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。

2.2 维度模型

  维度模型将复杂的业务通过事实和维度两个概念进行呈现。事实通常对应业务过程,而维度通常对应业务过程发生时所处的环境。

  • 注意:业务过程可以概括为一个个不可拆分的行为事件,例如电商交易中的下单,取消订单,付款,退单等,都是业务过程。

  下图为一个典型的维度模型,其中位于中心的SalesOrder为事实表,其中保存的是下单这个业务过程的所有记录。位于周围每张表都是维度表,包括Date(日期),Customer(顾客),Product(产品),Lopcation(地区)等,这些维度表就组成了每个订单发生时所处的环境,即何人、何时、在何地下单了何种产品。从图中可以看出,模型相对清晰、简洁。
在这里插入图片描述
  维度模型以数据分析作为出发点,为数据分析服务,因此它关注的重点是用户如何更快的完成需求分析以及如何实现好的大规模复杂查询的响应性能。

第 3 章 维度建模理论之事实表

3.1事实表概述

  事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。包含与业务过程有关的维度引用(维度表外键)以及该业务过程的度量(通常是可累加的数字类型字段)。

1. 事实表特点

  事实表通常比较“细长”,即列较少,但行较多,且行的增速快。

2. 事实表分类

  事实表有三种类型:分别是事务事实表、周期快照事实表和累计快照事实表,每种事实表都具有不同的特点和适用场景。

3.2 事务型事实表

1. 概述

  事务事实表用来记录各业务过程,它保存的是各业务过程的原子操作事件,即最细粒度的操作事件。粒度是指事实表中一行数据所表达的业务细节程度。
  事务事实表可用于分析与各业务过程相关的各项统计指标,由于其保存了最细粒度的记录,可以提供最大限度地灵活性,可以支持无法预期地各种细节层次的统计需求。

2. 设计流程

设计事务事实表一般可遵循以下四个步骤:

  1. 选择业务过程
  2. 声明粒度
  3. 确认维度
  4. 确认事实

1)选择业务过程
  在业务系统中,挑选我们感兴趣的业务过程,业务过程可以概括一个个不可拆分的行为事件,例如电商交易中的下单,取消订单,付款,退单等,都是业务过程。通常情况下,一个业务过程对应一张事务事实表。
2)声明粒度
  业务过程确认后,需要为每个业务过程都声明粒度。即精确定义每张事务事实表的每行数据表示什么,应该尽可能选择最细粒度,以此来满足各种细节程度的需求。
  典型的粒度声明如下:
  订单事实表中一行数据表示的是一个订单中的一个商品项。
3)确定维度
  确定维度具体是指,确定与每张事务事实表相关的维度有哪些。
  确定维度时应尽量多的选择与业务过程相关的环境信息。因为维度的丰富程度就决定了维度模型能够支持的指标丰富程度。
4)确定事实
  此处的“事实”一词,指的是每个业务过程的度量值(通常是可累加的数字类型的值,例如:次数、个数、件数、金额等)。

  经过上述四个步骤,事务型事实表就基本设计完成了。

  • 第一步选择业务过程可以确定有哪些事务事实表。
  • 第二步可以确定每张事务事实表的每行数据是什么
  • 第三步可以确定每张事务事实表的维度外键。
  • 第四步可以确定每张事务事实表的度量值字段。

3. 不足

  事务事实表可以保证所有业务过程的最细粒度的操作事件,故理论上可以支撑与各业务过程相关的各种统计粒度的需求。但对于某些特定类型的需求,其逻辑可能会比较复杂,或者效率会比较低下。例如:
1)存量型指标
  例如商品库存,账号余额等。此处以电商中的虚拟货币为例,虚拟货币业务包含的业务过程主要包括获取货币和使用货币,两个业务过程各自对应一张事务型事实表,一张存储所有的获取货币的原子操作事件,另一张存储所有使用货币的原子操作事件。
  假定现有一个需求,要求统计截至当日的各用户虚拟货币余额。由于获取货币和使用货币均会影响到余额,故需要对两张事务事实表进行聚合,且需要区分两者对余额的影响(加或减),另外需要对两张表的全表数据进行聚合才能得到统计结果。
  可以看到,不论是从逻辑还是效率上考虑,这都不是一个好的方案。
2)多事务关联统计
  例如,先需要统计最近30天,用户下单到支付的时间间隔的平均值。统计思路应该是找到下单事务事实表和支付事务事实表,过滤出30天的记录,然后按照订单id对两张事实表进行关联,之后用支付时间减去下单时间,然后再求平均值。
  逻辑上虽然并不复杂,但是其效率较低,因为下单事务事实表和支付事实事实表均为大表,大表join大表的操作应尽量避免。
  可以看到,在上述两种场景下事务型事实表的表现并不理想。下面介绍的另外两种类型的事实表就是为了弥补事务型事实表的不足。

3.3 周期型快照事实表

1. 概述

  周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,主要用于分析一些存量型(例如商品库存,账户余额)或者状态型(空气温度,行驶速度)指标。
  对于商品库存、账号余额这些存量型指标,业务系统中通常就会计算并保存最新结果,所以定期同步一份全量数据到数据仓库,构建周期型快照事实表,就能轻松应对此类统计需求,而无需再对事务事实表中的大量历史记录进行聚合。

2. 设计流程

1)确定粒度
  周期型快照事实表的粒度可由采样周期和维度描述,故确定采样周期和维度后即可确定粒度。
  采样周期通常选择每日。
  维度可根据统计指标决定,例如指标为统计每个仓库中每种商品的库存,则可确定维度为仓库和商品。
  确定完采样周期和维度后,即可确定该表粒度为每日-仓库-商品。
2)确认事实
  事实可根据统计指标决定,例如指标为统计每个仓库中每种商品的库存,则事实为商品库存。

3. 事实类型

  此处的事实类型是指度量值的类型,而非事实表的类型。事实(度量值)共分为三类,分别是可加事实,半可加事实和不可加事实。

1.可加事实

  可加事实是指可以按照与事实表相关的所有维度进行累加,例如事务型事实表中的事实。

2.半可加事实

  半可加事实是指只能按照与事实表相关的一部分维度进行累加,例如周期快照事实表中的事实。以上述各仓储中各商品的库存每天快照事实表为例,这张表中的库存事实可以按照仓库或者商品维度进行累加,但是不能按照时间维度进行累加,因为将每天的库存累加起来是没有意义的。

3.不可加事实

  不可加事实是指完全不具备可加性,例如比率型事实。不可加事实通常需要转化为可加事实,例如比率可转换为分子和分母。

3.4 累积型快照事实表

1. 概述

  累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。
  累积型快照事实表通常具有多个日期字段,每个日期对应业务流程中的一个关键业务过程(里程牌)。
在这里插入图片描述
  累计型快照事实表主要用于分析业务过程(里程牌)之间得时间间隔等需求。例如前文提到得用户下单到支付的平均时间间隔,使用累积型快照事实表进行统计,就能避免两个事务事实表的关联操作,从而变得十分简单高效。

2. 设计流程

  累积快照事实表的设计流程同事务事实表类似,也可以采用以下四个步骤,下面重点描述与事务事实表的不同之处。
选择业务过程-》声明粒度-》确认维度-》确认事实
1)选择业务过程
  选择一个业务流程中需要关联分析的多个关键业务过程,多个业务过程对应一张累积型快照事实表。
2)声明粒度
  精确定义每行数据表示的是什么,尽量选择最小粒度。
3)确认维度
选择与业务过程相关的维度,需要注意的是,各业务过程都需要一个日期维度。
4)确认事实
  选择各业务过程的度量值。

第 4 章 维度建模理论之维度表

4.1 维度表概述

  维度表是维度建模的基础和灵魂。前文提到,事实表紧紧围绕业务过程进行设计,而维度表则围绕业务过程所处的环境进行设计。维度表主要包括一个主键和各种维度字段,维度字段称为维度属性。

4.2 维度表设计步骤

1)确定维度(表)
  在设计事实表时,已经确定了与每个事实表相关的维度,理论上每个相关维度均需对应一张维度表。需要注意到,可能存在多个事实表与同一个维度都相关的情况,这种情况需保证维度的唯一性,即只创建一张维度表。另外,如果某些维度表的维度属性很少,例如只有一个,则可不创建该维度表,而把该表的维度属性直接增加到与之相关的事实表中,这个操作称为维度退化
2)确定主维表和相关维表
  此处的主维表和相关维表均指业务系统中与某维度相关的表。例如业务系统中与商品相关的表有sku_info,spu_info,base_trademark,base_category3,base_category2,base_category1等,其中sku_info就称为商品维度的主维表其余表称为商品维度的相关维表。维度表的粒度通常与主维表相同。
3)确定维度属性
  确定维度属性即确定维度表字段。维度属性主要来自于业务系统中与该维度对应的主维表和相关维表。维度属性可直接从主维表或相关维表中选择,也可通过进一步加工得到。
  确定维度属性时,需要遵循以下要求:

  1. 尽可能生成丰富的维度属性:维度属性的丰富程度直接影响到数据模型能够支持的指标的丰富程度。
  2. 尽量不使用编码,而使用明确的文字说明,一般可以编码和文字共存。
  3. 尽量沉淀出通用的维度属性。

4.3 维度设计要点

1. 规范化与反规范化

  规范化是指使用一系列范式设计数据库的过程,其目的是减少数据冗余,增强数据的一致性。通常情况下,规范化之后,一张表的字段会拆分到多张表。
  反规范化是指将多张表的数据冗余到一张表,其目的是减少join操作,提高查询性能。在设计维度表时,如果对其进行规范化,得到的维度模型称为雪花模型,如果对其进行反规范化,得到的模型称为星型模型
在这里插入图片描述
  数据仓库的主要目的是用于数据分析和统计,所以是否方便用户进行统计分析决定了模型的优劣。维度表一般是很不规范化的。

2. 维度变化

  维度属性通常不是静态的,而是会随时间变化的,数据仓库的一个重要特点就是反映历史的变化,所以如何保持维度的历史状态是维度设计的的重要工作之一。保存维度数据的历史状态,通常有以下两种做法,

  • 全量快照表
  • 拉链表

1)全量快照表
  离线数据仓库的计算周期通常为每天一次,所以可以每天保存一份全量的维度数据。这种方式的有点和缺点都很明显。

  • 优点是简单高效,开发和维护成本低,且方便理解和使用。
  • 缺点是浪费存储空间,尤其是当数据的变化比例比较低时。

2)拉链表
  拉链表的意义就在于能够更加高效的保存维度信息的历史状态。
(1)什么是拉链表
在这里插入图片描述

(2)为什么要做拉链表
在这里插入图片描述

(3)如何使用拉链表
在这里插入图片描述

3. 多值维度

  如果事实表中一条记录在某个维度表中有多条记录与之对应,称之为多值维度。例如,下单事实表中的一条记录为一个订单,一个订单可能包含多个商品,所会商品维度表中就可能有多条数据与之对应。
  两种解决方案如下:

  1. 降低事实表的粒度,例如将订单事实表的粒度由一个订单降低为一个订单中的一个商品项。
  2. 在事实表中采用多字段保存多个维度值,每个字段保存一个维度id。这种方案只适用于多值维度个数固定的情况。

4. 多值属性

  维表中的某个属性同时有多个值,称之为“多值属性”,例如商品维度的平台属性和销售属性,每个商品均有多个属性值。
  针对这种情况,通常有可以采用以下两种方案。

  • 第一种:将多值属性放到一个字段,该字段内容为key1:value1,key2:value2的形式,例如一个手机商品的平台属性值为“品牌:华为,系统:鸿蒙,CPU:麒麟990”。
  • 第二种:将多值属性放到多个字段,每个字段对应一个属性。这种方案只适用于多值属性个数固定的情况。

第 5 章 数据仓库设计

5.1 数据仓库分层规划

  优秀可靠的数仓体系,需要良好的数据分层结构。合理的分层,能够使数据体系更加清晰,使复杂问题得以简化。每一层都是一系列的表。以下是分层规划。
在这里插入图片描述

5.2 数据仓库构建流程

  以下是构建数据仓库的完整流程。
在这里插入图片描述

1. 数据调研

  数据调研重点要做两项工作,分别是业务调研和需求分析。这两项工作做的是否充分,直接影响着数据仓库的质量。
1)业务调研
  业务调研的主要目标是熟悉业务流程、熟悉业务数据
  熟悉业务流程要求做到,明确每个业务的具体流程,需要将该业务所包含的每个业务过程一 一列举出来。
在这里插入图片描述
2)需求分析
  典型的需求指标如,最近一天各省份手机品类订单总额。
  分析需求时,需要明确需求所需的业务过程及维度,例如该需求所需的业务过程就是买家下单,所需的维度有日期、省份、商品品类
3)总结
  做完业务分析和需求分析之后,要保证每个需求都能找到与之对应的业务过程维度

2. 明确数据域

在这里插入图片描述

3. 构建业务总线矩阵

  业务总线矩阵中包含维度模型所需的所有事实(业务过程)以及维度,以及各业务过程与各维度的关系。矩阵的行是一个个业务过程,矩阵的列是一个个的维度,行列的交点表示业务过程与维度的关系。
在这里插入图片描述
  一个业务过程对应维度模型中一张事务事实表,一个维度则对应维度模型中的一张维度表。所以构建业务总线矩阵的过程就是设计维度模型的过程。但是需要注意的是,总线矩阵中通常只包含事务事实表,另外两种类型的事实表需要单独设计。
按照事务事实表的设计流程,选择业务过程-》声明粒度-》确认维度-》确认事实,得到的最终的业务总线矩阵如下:
在这里插入图片描述
  后续的DWD层以及DIM层的搭建需参考业务总线矩阵。

4. 明确统计指标

  明确统计指标具体的工作是,深入分析需求,构建指标体系。构建指标体系的主要意义就是指标定义标准化。所有指标的定义,都必须遵循同一套标准,这样能有效的避免指标定义存在歧义,指标定义重复等问题。
1)指标体系相关的概念
(1)原子指标
  原子指标基于某一业务过程度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。原子指标包含三要素,分别是业务过程,度量值,聚合逻辑
  例如订单总额就是一个典型的原子指标,其中的业务过程为用户下单、度量值为订单金额,聚合逻辑为sum()求和。需要注意的是原子指标只是用来辅助定义指标一个概念,通常不会对应有实际统计需求与之对应。
(2)派生指标
  派生指标基于原子指标,其与原子指标的关系如下图所示。
在这里插入图片描述
(3)衍生指标
  衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成。例如比例、比例等类型的指标。衍生指标也会对应实际的统计需求。
在这里插入图片描述

2)指标体系对于数仓建模的意义
  通过上述两个剧吐案例可以看出,绝大多数的统计需求,都可以使用原子指标、派生指标以及衍生指标这套标准去定义。同时能够发现这些统计需求都直接的或间接的对应一个或者多个派生指标。
  当统计需求足够多时,必然会出现部分统计需求对应的派生指标相同的情况。这种情况下,我们就可以考虑将这些公共的派生指标保存下来,这样做的主要目的就是减少重复计算,提高数据的复用性。
  这些公共的派生指标统一保存再数据仓库的DWS层。因此DWS层设计,就可以参考我们根据现有的统计需求整理出的派生指标。派生指标如下图所示:
在这里插入图片描述

5. 维度模型设计

  维度模型的设计参照上述得到的业务总线矩阵即可。事实表存储在DWD层,维度表存储在DIM层。

6. 汇总模型设计

  汇总模型的设计参考上述整理出的指标体系(主要是派生指标)即可。汇总表与派生指标的对应关系是,一张汇总表通常包含业务过程相同、统计周期相同、统计粒度相同的多个派生指标。请思考:汇总表与事实表的对应关系是?

  • 一个汇总表对应一个事实表
  • 一个事实表对应多个汇总表

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin快速入门系列10

Kotlin的委托 委托模式是常见的设计模式之一。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。与Java一样,Kotlin也支持委托模式,通过关键字by。 类委托 类的委托即一个类中定义的方…

东南亚独立站的黄金机会-东南亚服务器租用托管的选择

作为一个独立站的企业,选择将服务器托管或租用东南亚的服务器是一个明智的决策。东南亚市场是一个适合做独立站的国家。 1、东南亚的社交媒体用户非常活跃。东南亚地区的人口众多,其中很大一部分人使用社交媒体平台进行社交和购物。据统计,东…

喜报|博睿数据算力调度可观测平台荣获信通院“算力服务领航者计划”优秀案例

近日,中国通信标准化协会云计算标准和开源推进委员会2023年度工作总结会暨算力服务工作组成果发布会在京举行。会上,“2023年算力服务领航者计划优秀案例名单”正式公布,博睿数据的核心产品算力调度可观测平台 Bonree ONE成功入选&#xff0c…

WordPress主题YIA的文章页评论内容为什么没有显示出来?

有些WordPress站长使用YIA主题后,在YIA主题设置的“基本”中没有开启“一键关闭评论功能”,而且文章也是允许评论的,但是评论框却不显示,最关键的是文章原本就有的评论内容也不显示,这是为什么呢? 根据YIA主…

获取真实 IP 地址(一):判断是否使用 CDN(附链接)

一、介绍 CDN,全称为内容分发网络(Content Delivery Network),是一种网络架构,旨在提高用户对于网络上内容的访问速度和性能。CDN通过在全球各地部署分布式服务器节点来存储和分发静态和动态内容,从而减少…

2024牛客寒假训练营1总结

G题不开long long的后果&#xff0c;即使有思路也没用。(给我气的) E题&#xff0c;不看数据范围的后果&#xff0c;不能一题名取题啊。 using ll long long; void solve() {int n, m;std::cin >> n >> m;std::vector<int>a(n);for (int i 0; i < n; i)…

【python】英语单词文本处理

文章目录 前言一、环境实验所需的库终端指令 二、实现过程Version 1 起源Version 2 listVersion 3 arrayVersion 4 结构化数组Version 5 区分单元且打乱顺序Version 6 可视化 三、txt文件 前言 缘起自懒得考小孩儿单词&#xff0c;最终效果如图&#xff1a; 本文记录了英语单词…

2024美赛数学建模B题思路分析 - 搜索潜水器

1 赛题 问题B&#xff1a;搜索潜水器 总部位于希腊的小型海上巡航潜艇&#xff08;MCMS&#xff09;公司&#xff0c;制造能够将人类运送到海洋最深处的潜水器。潜水器被移动到该位置&#xff0c;并不受主船的束缚。MCMS现在希望用他们的潜水器带游客在爱奥尼亚海底探险&…

react 之 useCallback

简单讲述下useCallback的使用方法&#xff0c;useCallback也是用来缓存的&#xff0c;只不过是用于做函数缓存 // useCallbackimport { memo, useCallback, useState } from "react"const Input memo(function Input ({ onChange }) {console.log(子组件重新渲染了…

物流自动化移动机器人|HEGERLS三维智能四向穿梭车助力优化企业供应链

智能化仓库/仓储贯穿于物流的各个环节&#xff0c;不局限于存储、输送、分拣、搬运等单一作业环节的自动化&#xff0c;更多的是利用科技手段实现整个物流供应链流程的自动化与智能化&#xff0c;将传统自动化仓储物流各环节进行多维度的有效融合。 例如在数智化物流仓储的建设…

OpenHarmony—Hap包签名工具

概述 为了保证OpenHarmony应用的完整性和来源可靠&#xff0c;在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。developtools_hapsigner仓 提供了签名工具的源码&#xff0c;包含密钥对生成、CSR文件生成、证书生成、Profile文件签名、Ha…

华为数通方向HCIP-DataCom H12-821题库(单选题:401-420)

第401题 R1的配置如图所示,此时在R1查看FIB表时,关于目的网段192.168.1.0/24的下跳是以下哪一项? A、10.0.23.3 B、10.0.12.2 C、10.0.23.2 D、10.0.12.1 【答案】A 【答案解析】 该题目考查的是路由的递归查询和 RIB 以及 FIB 的关系。在 RIB 中,静态路由写的是什么,下…

Node.js之内存限制理解_对处理前端打包内存溢出有所帮助

Node.js内存限制理解_对处理前端打包内存溢出有所帮助 文章目录 Node.js内存限制理解_对处理前端打包内存溢出有所帮助Node.js内存限制1. 查看Node.js默认内存限制1. Ndos.js_V20.10.02. Node.js_V18.16.0 2. V8引擎垃圾回收相关Heap organization堆组织 Node.js内存限制 默认情…

(十二)springboot实战——SSE服务推送事件案例实现

前言 SSE&#xff08;Server-Sent Events&#xff0c;服务器推送事件&#xff09;是一种基于HTTP协议的服务器推送技术。它允许服务器向客户端发送异步的、无限长的数据流&#xff0c;而无需客户端不断地轮询或发起请求。这种技术可以用来实现实时通信、在线聊天、即时更新等功…

Entity实体设计

Entity实体设计 &#x1f4a1;用来和数据库中的表对应&#xff0c;解决的是数据格式在Java和数据库间的转换。 &#xff08;一&#xff09;设计思想 数据库Java表类行对象字段&#xff08;列&#xff09;属性 &#xff08;二&#xff09;实体Entity编程 编码规范 &#x1f4a…

文本检测学习笔记_CTPN

论文地址&#xff1a;https://arxiv.org/pdf/1609.03605.pdf 开源代码&#xff1a;https://github.com/lvliguoren/pytorch_ctpn?tabreadme-ov-file 本文主要的的内容 提出了一种将文本视为由密集排列的具有固定宽度的文本候选区域组成的序列的方法。这些文本候选区域可以通…

三.Linux权限管控 1-5.Linux的root用户用户和用户组查看权限控制信息chmod命令chown命令

目录 三.Linux权限管控 1.Linux的root用户 root用户&#xff08;超级管理员&#xff09; su和exit命令 sudo命令 为普通用户配置sudo认证 三.Linux权限管控 2.用户和用户组 用户&#xff0c;用户组 用户组管理 用户管理 getent---查看系统中的用户 三.Linux权限管控…

[每周一更]-(第86期):NLP-实战操作-文本分类

NLP文本分类的应用场景 医疗领域 - 病历自动摘要&#xff1a; 应用&#xff1a; 利用NLP技术从医疗文档中自动生成病历摘要&#xff0c;以帮助医生更快速地了解患者的状况。 法律领域 - 法律文件分类&#xff1a; 应用&#xff1a; 使用文本分类技术自动分类法律文件&#xf…

【网络安全实验】snort实现高级IDS

注&#xff1a;本实验分别使用kali和CentOS6.8进行测试&#xff0c;可惜的是使用kali进行实验过程中遇到了困难&#xff0c;未能完成完整实验&#xff0c;而使用CentOS6.8成功完成了完整实验。 实验中用到的软件&#xff1a; https://download.csdn.net/download/weixin_5255…

Spring-集成Web

一、引子 前面我们在Spring集成Junit中为读者引出了Spring善于集成其它框架的优势&#xff0c;而Spring项目不可能仅限于小范围的某个方法的测试&#xff0c;终究会落脚于Web项目上。于是&#xff0c;我们就从这里正式进入Spring集成Web的话题。由于笔者会从原生的Java Web开发…