00:01
各位同学大家好,下面呢,我们开始进行远程调用,咱们通过service好的people去调用service c mn得到医院的等级信息,而这个过程怎么做呢?咱们需要用到lo的中等另外一个组件,这组件叫做B,通过它来实验这个负的调用。那这个怎么做,给各位来说一下,首先第一种方案,我们可以把这个调用代码写到咱们的调用端,也就是我们这个service好批中,因为通过它调CN,所以咱在里边可以完成这个代码,但是咱为了结构更加明显,咱现在可以单独建个模块,专门封装咱这个调用的经文内容,那我下面我就专门建一个模块来进行这个木调用的这么一个封装,那下面我来创建。首先第一个呢,我这么来做,我在这个预约挂号parent的工程下边,先创建一个子模块。
01:06
这子模块我起名叫这个service,那我们来创建,建的是一个慰问工程,然后在里边我起个名字叫做。Service。可耐呢?然后咱们点下一步把它创建出来,创建之后在里边咱们给它改上一个内容,因为目前在里边咱们需要再创一子模块,所以咱们把它类型改成一个po类型,那我下面给它叫改一下。在里边加上一个叫package,里面加一个POM,这是我们建的这么一个模块,然后这个接完之后在里边呢,咱们可以引入它相关的依赖,然后给他引入一下我们加个dependence。然后引入依赖中的第一个依赖,比如咱们现在就把里边这个common u给他引入,因为咱们需要用到里边一些相关的工具类一些内容。
02:07
那我们来引一下这个common。U把它做引入,然后这个引入之后,我们再引入一些其他内容,包括这个model,那这model给它也是引入进来,然后在里边写下。我们加个dependence,然后加上这个model,然后除了model之外还有一些其他部分,比如里边这个。Spring boot start web,包括里边这个cloud,包括相应内容,主要其实就是这个依赖,这个依赖呢,是咱们要封装这个B,不调用的依赖,叫做open b,所以现在我把这一个依赖给各位就直接复制过来,咱们放到我们的这里边。现在我们就完成了依赖的引入,就咱建这个STEM,然后这个创建之后,下面呢,我们在S维可里边再创建一个子模块,做咱们真正的那种调用的封装,因为咱后面会有很多封装,所以这个子模块我起名就叫做service c mn client,在它下面我们进步创建。
03:16
那现在我来创建一下。我们再建一个没用工程。然后我起名叫做。Service c mn。可爱呢?把这个咱们给它就分解出来。然后创建之后,这里边应该不需要引入特别的依赖,因为咱们刚才在工程中都做了引入,这样的话咱就完成了,完成之后呢,这个可兰下边的X2C目录目前不需要,咱把它就直接删掉就可以了,然后一会把代码写到这个CMN可中就足够了,这样的话咱们现在完成了模块创建,然后创建之后呢,咱们在这个CMN里边写我们的具体调用的封装。
04:04
那调用封装怎么做,我们先看一下,然后给大家进行演示,因为它的过程是固定的,首先第一步咱们先建一个interface,在里边加上注解,指定你要调的那个就是屋的名称。因为咱们现在要调的是不是service cmn啊,这个名称是你在那中注册名称,然后下面是为你的接口的地址,包括你的相关的参数,咱们封装就是这么一个基本过程,那下面在里边咱就给他来封装一下,我们就来写一下。第一部分在这里边,我先建一个包,这个包我起名叫com.at。硅谷点上这个CMN,然后点上这个。可。然后在里边呢,我们给他就是。
05:01
创建这么一个face,那这名字主要给他稍微改一下啊,咱改成这个叫预约挂号加个名字。把这个重新改一下。改完之后在里边呢,咱们给它创建上这么一个接口。呃,这道题的去掉啊。创建一个interface接口。然后接口起名,我叫这个d b client就这个名字,这个我们完成创建,然后完成创建之后,在这个interfe上面咱们加一个注解叫这个F,然后think里边加上你要调的那个务的名称,因为咱们远程调用调的服务是不是这个CMN啊,在CN的配置文件中,当时咱们配置的这个名字。就是这个application name,这就是咱们要调的副名称,所以你把这个名称给它直接复制过来,这是我们要加的这么一个东西。然后这个加上之后,咱们下边在里边就真正定一下你调的接口的名称路径,包括它的相关的参数,那这个怎么定义呢?给各位说一下这个写法啊,不需要各位写,咱怎么做,找到我们的CNN模块。
06:18
然后你把这个CTRL打开。打开之后呢,找到你要调的那个接口那个方法,把这方法直接就复制过来,那我给他自我复制,这是我们的。第一个。然后里边还有第二种就是一个参数,还有两个参数的那么方法,然后把方法直接拿过来。然后拿回来之后呢,并没有完,咱需要把它的路径给它补充完整,因为它的路径在这个mapping里边只是一部分,咱把它这个request外路径给它统一复制过来,就是补充完整,那你看我的写法,Din加上名字,这里边也是din c e加上名字,这个我们给它就补充完整了,然后补充完整之后,咱需要在里面这个pass注解后面指定它的名称,如果不指定它会有问题,这是它特别要求咱们给他指定一下这个叫。
07:21
D和Q的。然后这个名字叫Y表,下边也是一样,我们这里边指定它的名字叫Y表,在远程调的过程中,这个必须要指定,如果不指定它会有问题,所以这样的话呢,我们现在就把这个远程调用的这个过程做的碰撞,大家注意这个写法啊,首先我们创建interface,然后里边指定你调的不名字,用注解在里边定义义的接口的方法和路径,这方法路径我们到这个被调到这里边直接复制就可以了,注意负的过程中,你需要把这路径补充完整,然后注解后面需要加上那个参数的名称。
08:04
这样的话,咱现在这个就定义完成了。然后定义完成之后呢,咱们最后做的是什么,是不是就做这个调用了,那咱最后给他调调一下。那我们各位大家说咱下面该怎么写,或者说我们下面该怎么调用,比如说该怎么做。怎么写第一个咱是不是通过好的披头去调用三哦,而调的部分咱们在这里边是不是已经定义过了,所以咱做到第一部分就是在这个被调端和调用端你先弄清楚啊,好的批是调用端。CN是被调段。这应该能理解啊,然后咱在这个调端里边,先把这个client给他先引入进来,因为你定义了一些interface需要引入才能使用,那咱们来做一个引入。然后它的名字就叫做service c mn,把它先引入进来,然后写一下啊这个。
09:04
把它引入。然后引入之后,现在我们就完成了,完成之后呢,咱们来到这个好的批斗里边做一个最终的调用,那咱就直接找到它那个service里边,我们刚才写这个好people service。各位看,这是刚才写那个医院列表的查询的方法,那我们现在要做,比如调用,那怎么做,第一步是不是把刚才那个interface先给它注入进来呀,那我们做个注入刚才的名字咱看一下啊,就我这里定义这个interface的名字,咱看叫什么是这个。那我们写一下。叫这个d be,然后我们叫d b client,这样的话把它就做了一个注入,然后这里边报了一个错,是这个错误咱可以忽略,但是呢,为了不让它出错,你可以在这interfeit上面加上一个注解,比如说我们加上一个service,或者说加一个这个。
10:06
Rep都可以。这样的话,这里边应该就不报错了,然后这个不报错之后,咱在这里边就会调用我们刚才封装的这个过程,实际上我们最终的这个操作,比如说在这里边咱们调里边那个叫get内幕方法,是不是做咱的操作,那下面咱就把这个部分给他就补充完整,然后最终实验我们的远程调用的过程。那咱们看这个该怎么去补充完整。各位看啊,目前呢,在这个返回到O的这个对象中,是不是有咱们医院中的基本信息啊,但是信息中呢,它并没有什么,是没有咱们那个医院的等级信息,这个信息是不存在啊,所以咱们现在要做的是不是得到那个医院的等级信息这个值啊,所以我们要做这个事情。
11:01
那这个方法咱要怎么写呢?给各位来说一下,首先我们在这个O里边,比如这O我给他换个名字啊,我叫这个配置啊,咱换个名字。然后在这个配置里边呢,比如说咱们给它取一个值,大家看这个值叫get content,得到的是不是咱这个数据的例子集合呀,而这个例子集合中的对象,每个对象是不是这个hospital,比如我们的这个对象,大家看是不是这个例子集合hospital,咱们看啊,在hospital里边呢,有我们的基本信息,而在信息中咱们找他进行这个贝mongo n t。在这里边大家看是不是有个叫PMO,而我这里边本身并没有医院等级,但是它是不是有一个PMO,所以咱把医院等级或者其他信息是不是可以给他封装到P里边,然后最终咱通过这个p value在医院中取到是不是可以了,所以现在我们可以这么来做。
12:01
我再重复一遍啊,我们现在的做法。首先在这里边我们得到你查出数据这个所有的医院信息的集合,因为集合中的每部分是一个好,在hospital这数据中本身并没有医院等级这个属性或者字段,但是我们写是一类的时候写了一个叫P,所以咱可以用PMO封装你的医院等级,为了咱后面在页面中显示方便。那这过程我们要怎么做呢?咱是不是就要调用咱刚才的方法做到根据我们的第一个扣,包括里边那个就是这个Y6值是不是做过查询,那下面咱们可以把它就具体来写一下,我们来看下这个具体写法到底是怎么样的。那我们来做一下啊。首先第一个这个集合咱是不是要便历,遍历之后,把里边的每个hospital得到值做个查询是不是可以了,而他查的时候,第一个根据我们那个第一个扣的,因为咱们查医院第一个扣的值是不是就这个值是我固定的,下面查它的YY值是不是就是12345这些值啊,而这些值咱看一下院数据中哪个值跟它对应上。
13:20
大家看是不是应该是这个值啊,Host就是host type,你的医院的类型,这些是你的那个地域的类型,比如省、城市区的类型,所以再根据这个host type和我们那个第一个code做个查询,那下面再给它便历来写一下便利的话,多种方案,第一个你用普通的循环便利是可以的,但他现在把这方法咱换一种写法,咱们用那个就是JAVA8中那个stream流的方式做个便利,你用普通便利也是一样的。然后写一下啊,我们就进行这个这么写获取,我们查询出那个历史集合,然后便利进行这个医院。
14:03
等级的一个封装,那我们写一下配置四。点上这个get content,然后点上一个叫stream是不是用stream流的方式,然后咱们便利加上一个forage,在for中我们可以写上这个拉姆的表达式的方式,比如说我们起个名字,假如我们就叫这个item。加上一个右键头,然后咱们写上固定的大括号,在大括号里边就来做这个具体封装,咱就把这个item中进行查询,封装进去,我们这个值,那这个封装,比如咱们一会儿单独写个方法,假如这个方法我就叫这个,就叫set这个。耗子披头。就叫set hospital,然后这个医院的等级,比如叫这个house。
15:00
太。这个名字。然后在里边呢,把这个item传进去,咱在这个方法中根据item做做封装item,大家应该知道是不是就是每次便利之后这个好披对象,所以现在我们就这么来做,那下面呢,咱就来创建这么一个方法,在里边实现最终的封装。那我们来做个创业,我们就在这里边直接写一下。做这个封装。然后咱们让他返回到就返回我们这个好这么一个B项。缝析的方法,然后写完之后,下面咱就开始封装一下啊,名字改一下,那怎么封装呢?首先第一个咱肯定要做个查询,那调我们刚才注入这个dig b client里边这个叫get内个方法,因为我们现在把等级,所以咱们传两参数,第一个参数是第一个扣的,也就是里边的这个值叫cost type。
16:03
把这个给各位直接拿回来,然后第二个呢,就取到,咱刚才看到这个叫post type这个值,那我来取到啊,到这边取一下。好点,上盖这个。House type。比如我们得到那个一。就这个值,然后得到之后,最终呢,它会返回我们这么一个参数,参数就是一个就类型,就是咱起名叫这个hot type,咱为了区分加上一个缀,这样的话呢,这段代码就是根据。我们这个D扣和Y6值获取到了你这个医院的。等级的这个名称,这样的话我们就完成了。然后完成之后呢,咱可以把这个医院等于这个名称,是不是给他set到我这个hospital里面去啊,然后给他set一下,咱直接给他就是写一下啊,大家看咱们刚才看到这里边有一个那个属性名字叫P,咱是不能放到P中去,而P本身是个什么。
17:12
是不是一个外部集合呀,那大家说怎么往里面放。第一个首先得到这个。然后得到之后调里边的吐的方法往里边放,而它的名字,比如我们就叫这个。House。String,然后它的值就是这个值,这个放出之后,咱们最终把它做一个。瑞屯是不是就可以了,这样的话咱们就完成这个封装,然后屯之后在这个item中就有,咱们就用这个那种。这是我们写的。这么一个构这个结构,然后这样的话,医院等级就查到了,然后医院等级查到之后,比如说啊,咱为了我们这个效果更加清晰,咱可以再练一个,练一个什么呢?大家看啊,这里边是不是还有这个值啊,包含你的省市,还有你的地区,而省市地区查的话,是不是只需要我们的Y6值可以了,那我们下面根据这几个值,咱们也可以做个查询,是为了我们这个练习一下它的其他方法。
18:14
那比如说我们查一下,假如现在我想查询我们这个省,包括它的市。包括它的地区,那咱来查一下啊,调这个第个b client里边的get name,然后咱们用一个参数,一个参数中咱们第一个用hospital里面这个盖这个province code,根据省代D查询出你里边这个值,这样的话我们就查出来了,然后咱们给它起个名字。我们叫这个。对。这是查出那个省,然后查出省之后,我们再查它的市,包括它的地区,咱们根据它我们就快速改下,因为结构都是一样的,那咱看第二个就是它这个式。
19:02
然后这个是查的,用这个get city code这里边我就叫这个。第三个我们查这个地区。Get这个code,然后里边我也起上这么一个名字。String。所以这样的话呢,咱就调用一个参数方法,把这个省市地区的值都查出来了,然后查出来之后,咱们给他是不是也可以放到这个hospital中去,那我们给他放一下,比如说给它起个名字,我就叫这个就是一个地址嘛。我们叫for。Best。完整的地址。然后后面加上咱们刚才写的三个值,第一个是这个省,第二个是它的市,第三个是它的地区,然后最终把这对象我们做一个返回。所以说咱们现在写到这里,咱就把这个远程调用的过程,我们就最终完成了,就这过程中咱们查询出医院的列表,然后医院列表中包含你的医院的等级信息,等级信息咱通过远程调用实现,包括咱们刚才这个代码,就是做一个远程调用,这里边做这么一个封装。
20:22
所以这样的话,医院列表接口我们就最终选出来了。
我来说两句