00:00
然后我们导进来这个哈,我们下边就可以看一下,我们之前没有说的那样几个概念了,就是在这个依赖里边哈,在这个依赖里边,就什么这个依赖的传递性啦,依赖的原则啦,依赖这个统一管理这个版本啊等等啊这些嗯,我看看啊,之前我们说依赖呢。是在这儿说的。嗯,好,依赖依赖这个算算一个初步的哈,咱们就不在这挤了,咱们在这儿下边呢,再说一下,这个相当于这个,嗯,依赖的反正就是比那个在稍微高一点吧,首先我们说一个事儿哈,叫依赖的传递性,诶这是一个挺有用的一个东西,大家在这儿看哈,嗯,我现在呢打算呀,在这个hello里边哈,我打算去导入一个扣啊spring的这个核心的这个价格,咱们就导这一个,我去倒他的时候呢,你看我现在导之前哈,我这个hello里边呢是没有的,我这个hello friend里边诶也没有,我这个make friends里边呢,它也没有,然后呢,下边咱们就来给它加一下,我们去给它加一下,诶加一下spring这个加包。
01:27
那么当然,我得去找一下他的依赖,看这里边有没有,哎。C我加上以后呢,大家首先看我们这个hello,这诶那么这是我们家的这个,呃,诶这个就是spring扣啊,加的是这个这个它它的这个夹包,这是我们家的夹包这个本身,然后呢,它附带的还带了一个commonlogan诶还附带了一个commonlogan,那么我想大家能感觉到这个commonlogan是因为啥进来的吧,哎,因为spring扣依赖这个common slogan,所以说呢,它会自动把common slogan导进来啊,当然了,现在我们说的还主要还不是这个事啊,我们现在要说的呢,是大家看这我看hello friend里边它是不是也有spring呀,诶当然这个呃附带的这个common log呢,它也就这个导进来了,然后我们再看这个make friends,诶,它也有了,那么我们我们我们想哈。
02:36
我刚才只是在hello里边去倒了这么个依赖,我在hello friend里边并没有去加这个依赖,没有加他反而还有了啊,没有加他反而还有了,是谁的呢?诶你看我们在hello friend和make friends里边都没有加这么个依赖,但是我在hello呢,在这里边哈,把它这个加上以后,诶这个hello friend和make friends里边也有了这个时候这个效果呢,是不是就是可以很形象的称之为是依赖的传递性是吧,他是不是就他给我们hello friend和make friends这他给传递过来的啊,这个就是传递性的一个,呃,这这这个非常这个形象啊,就是非常直观的一个体现,我们在这儿呢,大家看哈,这个POM的X毛呢,它在这儿呢,除了看这个源码哈,这是它的源码,这还有这么一些这个其他的选项卡,我们看这个dependency呢,这个dependency就是当前你依赖的这些就是你。
03:36
在这配置的这些依赖,其实呢,我们管这些哈,可以叫直接依赖啊,这些叫直接依赖,然后呢,这儿有一个dependency,对不起,这个单词不太不知道怎么念,但是我知道它是层次结构的意思,那么这个显示的就是依赖的层次结构,那么这个时候呢,我们说嗯,这个和这个可以称之为是直接依赖,但是后边列出来的这些呢,就是这个间接依赖啊,间接依赖,然后呢,我们可以来看,可以来看这一部分。
04:14
嗯。这是这是一个我们直接的这样一个依赖啊,Make friends依赖的是这是这是make friends的一个直接依赖。然后下边这些呢,我们可以说他们都是这个传递过来的依赖。哎,这是传递过来的一览。CTRLC,诶,我们先对传依赖的传递性先有这么一个直观的认识,那么大家想我这个依赖的传递性哈,其实它有一个非常重要的一个作用,就是大家我们先提前剧透一下啊。
05:16
这个你看我们要做的这个项目,我们回头去搭建这个环境的时候,我们在这儿呢,有这些依赖需要导进来,CTRLC你觉得挺多的。其实其实其实并不多,我把这个先注释掉啊,哎,把它注释掉以后呢,你看这些就是又恢复到之前的状态啊,然后我把这一大串导进来,当然我们先导一下,一会我们就删掉啊,这个大家感受一下就行,你看我导入这些依赖以后,我这个hello里边是不是就有这些了,是吧?然后呢,由于依赖的传递信,我这个hello friend里边也就有这些了,然后呢,这个make friends里边当然就也就有这些了,所以这个依赖传递性这一这上面这一串都能够给他传递过去。
06:08
那么给我们带来的好处就是什么呀,就是你这个这么一大堆这个dependence就是这样的这个这个依赖的信息,是不是我在最底下这个工程我只写一次就行了呀,哎就就是它就是给我们带来的就是这样一个好处啊,依赖的传递性,它的这个好处,嗯就是嗯嗯可以传递的依赖不必,嗯在每个模块工程中都重复声明,嗯在这个最下面的工程中,哎依赖一次即可,我们说这个最下边这个哈,是依赖关系里边的这个上下这样的这个概念,这个当然这个当然这个说法呢,不是不是很专业,但是我觉得这个我们能理解这个意思就行啊,理解这个。
07:09
意思就行,一两一次就可以了,这是我们说以后呢,肯定是啊,我们就是按照这样的方式来做的,回头我们去创写咱们这个项目的时候,也是专门有一个模块,就是为了负责维护这些框架的假包的依赖信息的,诶所以这个哈,我们看一看就行了,咱们把这个呢,还是给它这个删掉啊,这个这个东西太多了。但是呢,我们还还得跟大家说一下,这个依赖呢,这个传递吧,也不是绝对的啊,有的有的依赖呢,就传递不过来,嗯嗯,我们先给大家这样一个结论啊,就是说这儿有一个需要注意的事,非compel范围的依赖不能传递,诶非compare范围的依赖不能传递,那在我们这儿呢,指的就其实就是其实就是T和comp和这个provide这两个范围,它俩是传递不了的啊,我们再来看一下,还是spring扣啊,我们来举例子,当然spring扣它就应该是范围的,呃,就就这个价包的作用而言,它肯定不能设置为taste或provide的,但是我们在这只是拿这个举个例子啊,只是在这拿这个举个例子,但我把这。
08:35
这个扣这个泵扣这个啊,我们先设置为这个T,然后你看这个我在hello这呢,当然它还有啊,他自己是可以用的,但是hello friend这儿他看不到了,哎,这个他就因为测试范围它是不能传递过来的,然后这个make friends这儿呢,你看它也就过不来了啊,哎,然后呢,我们再改回来,改回来以后它有了啊,看这儿和这儿,然后呢,我们要是改成provide的,它就又没有了啊,它又没有了。
09:12
所以这时候我们就能感觉到哈,这个test的范围和provided的范围呢,我们可以可以认为哈,从这可以认为它就是给当前工程自己用的啊,它就不能传递给这个上面的工程啊,所以说呢,你像这个非非comp范围的provided和taste这样的范围的依赖,因为它不能传递,就得是你哪个工程需要哪个工程呢,单独的去把它这个加上,所以这样的信息呢,是呃,是很有可能是重复的啊,而且我们实际做这个项目的时候,也确实是这样的啊,有几个就是像这个solid API啊,这个provide的这个范围的这个依赖,它确实是确实是这样的,这个需要在各个模块工程里边啊,有需要的都得重复的去加,所以嗯,因为它不能传递,所以在这个各个工程模块中,如果有需要,就嗯,就得这个重复,嗯声明。
10:12
有这个依赖,哎,当然了,你说这个你重复声明的话,这个是不是就是,呃呃,是不是这个代码冗余啊,你说余吧,它也是冗余,但是吧,这个因为这样的东西呢,就那么一两个啊,所以说这个加一下呢,也没有什么,它也没有什么大不了的啊,他不是那个不是很多的那种,嗯,而且他客观上他决定了他必须就得这样啊,你这个你不能说不能用这个冗余性来这个否定这样一个做法啊,这是我们说依赖传递性哈,这是我们需要注意的是这样一个问题,哎一个呢是嗯,所以其实呢,我们这个依赖你想传递哈,你得是comp范围的才行啊,非comp范围的不能不能传递,再一个呢,你传递了以后,这个能够传递的这样的依赖,就声明一次就行了啊,在一个工程里边声明一次就行了,其他工程就不用声明了,主要是这么两点。
我来说两句