00:00
好,我们继续。接下来呢,做一些基础性的工作,首先呢,是在我们YouTube这个模块里面啊,增加我们这个产量,以及这个工具类这些,那么其实呢,我们说哈,这个前面如果大家跟着做的话,这些呢,大家也都不陌生了。呃,我们先去见一下吧。找到我们的。点错了。Com点艾特硅谷点。我就简单吧,就简单。呀,不行,这个得跟后边这个我们截的图这方面得得得一致了哈,我看看后边哪有关于我们包的这些个截图。嗯,还是得叫这个名。Emmaor。
01:00
Count。啊,然后呢,它这个是我们的U9。呃,然后呢,这个具体这个类的名字。还是叫这个名啊,这个存放我们的常量。啊,假如说后边有需要增加的就再说啊先现在先把这两个先拿进来。呃,字符串加密的。嗯。哎,这里边儿呢,有需要导的一些个包,看看有看看啊呃,Message dIgEst。没有这个算法的一场。
02:00
Big in。好嘞。然后呢,呃,登陆失败的这个异常。点exception.logging field exception。好嘞。这个咱们都没有什么需要多说的啊,这里边儿重点呢,我们来说一下这个entity。哎。这是我们前边没有用到过的,现在呢,我们把它拿出来啊,呃,要解决一个什么问题呢?啊,我们在我们说啊是呃,分布式架构是服务的消费者去调用服务的提供者。
03:00
那么。如果不同的提供者呀,他们给返回的这个数据类型呢,都不一样的话。哎,那么对我们去去消费服务的这个消费者这一端呢,它就这个,其实就是说我们人与人之间哈拈之间协调呃调用啊,或者说这个学习的成本就会比较高一些啊,就不利于我们人与人之间的这个沟通,而且呢。我们说了前面也提到过啊,用它呢,也是考虑到我们后边有这个熔断。有降级这些方面的这个考虑啊,然后呢,就是说你即便是熔断了降级了,我们也能够返回同一个类型,那么我们就把这个所有的整个项目里边所有的提供者返回的数据类型啊,都设定为这个result。哎,这个result entity里边呢,它包含你看包含一个result。这声明了一个常量叫success,这有个常量叫field,那么我们要是成功的话就返回它啊,就把success复制给这个result,失败的话就把field赋值给result,这样的话我们就知道了。
04:08
哎,我们拿到consumer这一端,拿到拿到result。访问我们result这个属性,然后呢,再看你是success还是fail,我们就知道是成功还是失败。这里边儿呢,还有一个问题哈,就是说我们为什么是用success,而不是用true false。这个呢,稍微给大家去提一下啊,因为这儿有这么一个问题。一方面呢,Success明确的表示成功,Fail明确的表示失败。true呢,只是表示真。哎,False呢,表示是假,那么有谁规定说我们天然的真就表示成功吗?甲就表示失败吗?这个东西会不会在有些人这儿会有?理解上的偏差啊,他会不会认为true表示的是失败,False表示的是成功?
05:00
啊,这个也不是说没有这种可能呀,他认为你这个量表示的是我有没有失败吗?啊,我要处的话,不就表示是是失败了。啊,所以这个时候它表意不是,呃,非常的精确,这是一个方面的问题,另外一方面呢,有一个技术上的问题。说啊,我们假如说呢,用result edit啊,用它呢,是给这个前端给我们javascript的程序去返回一个哎AX响应的结果,那么这个时候呢,它经过HTTP协议的传输以后,所有的数据呢,都会变成字符串。啊,我们知道HTTP协议它是一个无状态无类型的协议,所有的数据呢,它都只是当字符串,它才不管你是整形布尔类型是字符串是什么,它不区分这些啊,所以它的对它来说呢,它传输的就都是文本啊,因为毕竟你想它叫超文本传输协议嘛,啊,它归根到底它里边也是都是文本啊。嗯,所以说呢。
06:02
它会把这个false如果传过来,会加上双引号,而这个呢,一旦加上双引号啊,这个时候他在我们GS程序里边是可以这个直接放到if里边来来用作判断的,如果说你不假思索的就把这个双引号啊,双引号false放到了这个一符判断里边,GS是允许这么写的,而且呢,他认为这是一个什么呀,非空的字符串,非空的字符串呢,会被解析为真。哎,你看你本意呢,想表达的是假,结果呢,运算出的结果却是真。真真是无为有处。叫什么假作真实真亦假啊,无为有处有还无啊,你这个时候真假就错乱了啊,我们程序里边肯定不希望给自己去挖这样的坑是吧,所以说呢,在这哈,出于各种原因的考虑,我们这儿呢,其实最好呢,不要用true false来表示成功还是失败啊,我们成功就是用success去表示,失败就是用field去表示,这样的话就非常的清楚精确,没有歧义,不会有理解上的偏差啊,不会有我们这个,呃,认知上面的不协调,也不会出现这个,我们说这个。
07:17
False啊,被当成真的这样的情况,毕竟呢,我如果传回去的是field,它不会说啊,你肯定得拿这个field和field的这个字串去比,你不能说,你不能说直接就把这个result直接放if里边,这个没有意义啊,我们它比它也并不是这个呃布尔类型啊。这是说了一下这个还有呢,是说我们这儿这个message是在我们,呃,远程调用失败以后。你总得给个说法,好端端的为啥就失败了,哎,所以我们会把这个错误的消息呢,放到这个message里边。然后呢,我们这个。要返回的数据啊,要返回的数据就是我们这个data这个这个是什么意思呢?就是说我们如果你现在做的是一个查询的操作。
08:03
那得有查询结果呀,啊,那如果查询操作执行成功的话,查询结果就放在这儿,那他如果失败呢,失败也就不可能有结果了,对吧,失败的话就要封装这个,哎,错误消息了。这是最关键的,这里边儿核心的三个属性,然后下边呢,这是一个。工具方法。Success without data有的操作是呃,不带查询结果的,它不是查询啊,可能是增加点的操作,所以说这儿呢,我们就呃,这是一个不带查询结果,没有返回值的一个成功的响应啊,所以在这儿结果这儿封装的是成功啊,后边消息和数据这都没有。这是带数据的成功啊,那就是哎处理结果是成功,没有消息带上数据。然后呢,再然后下边这个就失败了,失败就把消息传进来啊,这个是是出了什么问题啊,是怎么就失败了,诶这些呢,就是这三个就是我们封装的工具方法,让我们用起来呢,更方便啊,省得还得自己去操心怎么创建对象。
09:07
接下来呢,就是对属性的封装,无参有参的构造器,兔子骏方法,下边就是盖塞的方法。哎,所以说这就是我们一个entity这样的一个类哈。我们给大家去呢,详细的解释一下啊。然后呢,在这儿哈,我们给它把这个类建出来。给他说明啊,这样吧,我们就反正是复制的代码了。里边应该也没有什么需要额外导入的这个类。好。
我来说两句