00:00
好嘞,呃,那么接下来呢,我们要看的是这个。首先呢,看一下这个单词啊呃,其实呢,我们说哈,这个时候呢,你看它这个单词的结尾呢,是ED。哎,那么呃,他是在谁的后边加的这个ED呢?是在后边加的这个ED。呃,Provide我老是记不住它后边有没有这个E哈,这个不发音的这个E啊,哎,这个provide呢,它是个动词,表示提供的意思,哎,那么我们说呢,现在给它加了E后边,呃,让ED结尾以后就会变成过去式或者过去分词。我们这儿呢,它应该是一个过去分词当形容词的这样的一个一个效果啊,所以说呢,就表示什么呢,这个翻译成中文啊,它表示已提供。
01:00
诶,怎么个以提供法呢?我们先不说程序,我们先拿生活中的你熟悉的场景呢,咱们先来举一个例子,咱们先从道理上先理解了,然后呢,咱们再去看这个测试的效果。啊,生活中举一个什么例子呢?比如说呀,你放寒假了,你要到你外婆家呢去度假,哎,然后呢,外婆给你准备了好多好多好吃的。然后呢,这个手呀。你要带上你的学习用品啊,你要带上你的呃,你喜欢的玩具啊,你等等,这是你随身的物品,但是这个时候呢,你想哈,你肯定不需要去带你的被子,因为啊,外婆家呢,有你的被子啊,而且是你专专专用的啊,外婆非常的疼你啊,你没有没有,你的被子从来都不允许给任何其他人用,哪怕你一年就用这么一两次啊,你就是经常拿出来给你晒一晒,还香喷喷的。所以说呢,外婆家既然有你的被子了,那么你去外婆家度假去,住在外婆家,你肯定就不需要再带上被子去了。
02:05
是不是就说明是外婆家已提供你的被子,你去外婆家就不用再带自己的被子了?对吧,就是这个意思。这是我们生活中的一个例子啊,你先先去理解我想要去说什么,然后呢,我们想说的是什么呢?用provide的这个范围。引入的这个依赖啊,就是我们服务器啊,就是我们tomcat上边它已经提供了。他已经提供了,你就不用带了。那你说我要非要带呢,你非要带呢,他有可能会有冲突啊。诶,外婆家都给你准备好被子了,你非要带自己的啊,还这个非常的累赘啊,还很不方便,你外婆肯定很不开心啊。我们以provided范围引入的依赖就是我们这个API是吧,就是它。
03:05
那么这个SOAPI呢,我们看看tomcat服务器上面有没有呢?我们再打开一个窗口。哎,就是它服务器上是有的。啊,这个这个你看啊,它就是外婆家给你准备好的你的被子。外婆家有了你就别带了,服务器有了你也就别带了,哎,我们这是别带谁了呢?我们这儿以provide的范围引入的SAPI这个东西你就别带上去服务器了。哎,也就是说什么意思呢,你在打包的时候,打包的时候啊,就不包含这个API了啊,Provide范围引入的,它就不会包含在包里边。哎,将来部署的是外包对吧?哎,那你不放在外包里边,那么当然他也就不参与部署了,不会放到服务器上。
04:05
这里边需要注意的就是什么呢?我刚才说到你硬要带的话啊,你这儿不写,呃,Scope provide的,它就是compare范围,它就会被放到外包,外包里边会带到服务器上,你带到服务器上我们看一下,我这儿是3.1.0,他这是。他这也没显示个什么版本。嗯,这里边儿。这个好像也看不太出来哈。这看看不太出来它是什么版版本,这个时候就很有可能会有冲突。啊,很有可能会有冲突,而且这个时候呢,我们是真正的去发生过这样的事情的。就是说呃,其实呢,和API呢类似哈,如果你需要用到一些个GSP的功能,需要以provided范围导入GSAPI。那么以前呢,就发生过有的同学呢,写导入GSPAPI的这个依赖的时候没有写的啊,他就是那么他就把自己的导入的GSPAAPI就给带到服务器了,那么他自己带过来的和服务器端的这个呢,就发生了冲突。
05:10
冲突的表现是什么呢?他在GSP页面的这个视图模板技术的底层呀,抛了一个控制异常。空指针异常呢,如果是我们自己写的程序,这个倒是挺容易解决,那肯定是你是变量指向的是闹,然后去调方法了,你这个地方你去还比较容易排查啊,你这个时候你是判断一下也好,或者是哎,你把这个值正常的传过来就好,可是呢,这个时候我们现在呢。GP底层他抛的这个控制针异常,这个代码也不是我们写的。啊,你你这个摸都摸不着。也不是人家这个代码有问题啊,这就是因为这个价包之间的冲突所导致的这样的非常奇怪的这样的错误。这个错误当时他找了好长时间啊,这个东西也很费解啊,你说这个他底层的,本来别的同学都正常没问题的,到我这儿为什么就有有有问题,我这时候我这个难道我改他的源码吗?Gpi的这个源码又不是你直接能改的。
06:11
啊,而且即便你改这个源码,因为这个方向本身就不对,不是人家这个代码的问题啊,是你这个是你加班冲突所导致的,所以说你不能压根儿就他表面上给你抛的这个异常,根本就不是你解决问题的一个思路和方向。啊,所以说你这个价包的这个冲突哈,这个还是挺闹腾的一个问题啊,所以说我们千万呢,别给自己挖这样的坑。哎,该是写的范围就是的范围啊,这个时候我们不要偷懒。有的时候呢,有同学说了啊,说这个我记这些范围,这个我太闹腾了啊,我我我干脆一刀切啊,我就管他三七二十一,我全都不写这个啊,你爱嗯,你爱带不带啊,这个时候的话,其实是有很大的隐患的,如果说他们不写哈啊,就说这个都用comp范围不写也行,那我就不给你讲这些了,我就不需要跟你说这些了。
07:06
对吧,我既然老师呢,要给你花花这么大的精力去跟你说这个事儿,肯定呢,他是非常的有必要的啊,这个地方大家千万不要去呃。啊,不要那么头铁啊,这个地方就不要那么头铁。好嘞,这是我们从道理上呢,给大家去讲了一下,下边呢,我们就来看一件事就行了啊,前边你看这些都是有效的啊,就是这些其实也就不用再过多的去验证啊,最关键的我们就是provide的这个范围,它最大的特点啊,它想要体现的就是说到服务器端部署的时候,打外包的时候不带他玩。所以说我们就就还是说哈。我们就是之前我们这个provided的范围的这个依赖一直都在啊,然后呢,我们就是来看一下,你看这个打挖包以后,这个从来就都没有带带过它啊,从来都没有带soulpi就证明确实是啊,确实是它也不会被放到袜包里边,不会被放到服务器上,呃,原因呢,刚才我们解释了,因为服务器端有你把你自己的带上去呢,反而还有可能会产生冲突啊,给我们的程序的运行带来隐患。
08:15
好嘞,啊,这个这样的话,其实呢,我们就呃,从道理上原理上啊,然后从这个原因上,以及从这个效果上,我们都给大家去说说过了,那么结论呢,我们这儿哈。Comp范围主体业务功能所需要的依赖test范围测试所需要的provided就是我们开发过程中需要用到的服务器上的。诶服务器上呢,你在没有部署运行的时候,你在写代码的时候,这个时候你没法用。啊,你开发的时候想用怎么办呢?以provided的范围给它导进来。啊,说白了就是服务器上已经有了,你就别带了啊,就这么个意思。另外呢,其实我觉得大家哈,在这儿友情提示一下啊,你不必觉得有很大的负担。
09:02
我冒昧的揣测一下,你心里边可能会有担心啊,说这个将来,呃,我怎么知道哪个写provided的,哪个写哪个又写taste呢?啊,我将来怎么去辨别呢,我将来怎么去做这个配置,怎么去做这个设定呢?哎,这个时候呀,不需要有这样的一个顾虑啊,这个因为你想哈。呃,就好比说我们搜索这个。随便搜一个什么,比如说这个搜索这个依赖信息的时候。啊,一般来讲呢,如果呢,需要它需要加这个范围,它这个地方就就直接就就有了啊,这个这儿没有加就不需要。啊,然后呢,比如说我们搜索一个spring。Boot啊。你不用管这个加班干嘛用的,反正带taste,这不就肯定是测试用的吗?
10:00
哎,随便点进来一个。啊,你看人家这个范围里边,人家这个地方这范围这已经加了SCO test了,这东西本来就有啊,你这个时候我们看到他知道啥意思,你别手欠把它删掉就完了。哟呵。然后呢,就是说呢,就是这个还有啥呢,就是。比如说呢,我们搜一个gpi。人家这里边儿呢,你看这个provided呢,人家也会自动的,就是这里边儿就都会给加好,你也就是说别首线删掉啊,别首线就删就行了。对吧,啊,所以说这个东西你想呃,我们而且呀,需要加这个特殊的这种呢,就那么几个啊,就是你用的多了就知道就那么几个啊,就那么极个别的就那么几个,没有那么多的,哎,特殊情况啊,也基本上不需要你自己去做什么判断,去去辨别。
11:02
啊,所以这方面呢,大家哎呃,理解我刚才所说的啊,然后这个是去哎去在理解的基础上呢,去记住我们这个结论啊,然后呢,放下所有的心里边的思想的负担啊,啊不需要有任何过多的担心啊,我们只要是理解了这几个最基本的这个配置就可以了。以后用的多了以后你就知道啊,99.99%全是compare范围的,Test或者provided范围的呢,就极个别的就那么几个,将来学到spring spring cloud的时候,你会看到有这个import的啊呃,偶尔会看到,因为这里边就是偶尔会看到有run time的system呢,我们稍带的说一下就完了,后边这三个呢,等我们放到第三个锦囊里边再给大家去介绍啊。
我来说两句