00:00
来,那么接下来呢,我们再来给大家去说一下这个视图解析器它的一个作用,呃,视图解析器的作用呢,就特别单一了啊,就是它天生就是用来解析得到视图对象的。明白吗?哎,它的作用特别单一,就是什么呀?就是将逻辑视图解析为一个具体的视图对象,说白了就是你给我一个视图名字,然后呢,我给你得到一个视图对象,那么我们可以从它接口里面的这个方法叫做result will name来得出这个结论来,明白吗?我们刚刚看过哈,我再来带着你呢去啊,看上一次。啊,就是我们的VI的,Sorry啊,这个地方有看到没有,你给我一个视图名字,我给你一个视图对象对吧?所以说视图解析器的作用就特别特别单一了,就是来负责这个事的啊,但是呢,大家注意啊,呃,Spring m VC呢,它可以支持我们去配置一种或者多种诶解析策略,并且呢,可以去指定他们之间的一个先后顺序,也就意味着我们其实是可以配置多个视图解析器的,但是呢,我们只要学会一种就行了,这个你只作为一个了解清楚的东西明白吧。那么我们就来看一下常用的视图解析器的一个实现类,我们能看到的是有一个叫做internal resource VIVO server,这是我们已经用过的,除了这个之外呢,还有一个叫什么b name VI serve,这个也是一个常用的视图解析器的实现类,这两个呢,诶我们只要掌握其中的第一个,这个第二个就是我们的resource。
01:42
操表就行了,像第一个你可以啊记住或者说记不住也没关系,因为我们基本上不会用它了,听懂了吧,OK啊,那么假如说我用到了这个多个啊视图解析器了,那么我们就得去考虑它这个优先级的问题,因为你想一下我配置了多个视图解析器,当我拿到一个视图名字的时候,你说我是交给他处理呢,还是交给他处理啊,对吧?那么这个时候我们就得有一个优先级的问题,怎么去考虑优先级的问题呢?那么我们希望啊,我们需要不是希望啊,我们需要在我们的视图解析器中通过一个属性来注意啊,配置这个视图解析器的优先级怎么配置呢?我们通过一个pro,然后呢,这里面呢有一个order,通过order给他指定一个优先级,那么。
02:42
这个order呢,我们可以来看一下啊,默认情况下这个order的值是多少呢?你看我点进去看一下,它叫做类型的max value多大呀。是不是int类型的最大值啊,对吧?哎,我之前是不是给大家去说过这个东西啊啊,今天不再说了啊,你就记住默认值就是int类型的最大值,而如果你想让它的优先级高的话,那么你就把它的值呢设置的小一点,比如说我把它设置一个100,那么假如说我再去配置一个视图解析器,它的Y6是200,那么优先级就是它高,也就意味着如果你拿到视图名字以后呢,是他先来处理的,如果他处理不了,才会交给他去处理,如果他能处理,那么他就不会再进行工作了。
03:34
明白这个意思了吗?啊,所以说呢,这就是我们视图解析器的一个优先级问题。听明白这个意思了吧,明白了吗?OK,好,那么这个说完以后呢,我们还是最终具体来看一下视图解析器里面的这个resolve will name啊这个方法,OK,好,那么我们来看一下刚刚呢。我们看到了这个接口,然后在这个接口下面CTRLT一下,我们找到我们的resource visual resource用的是它吧,然后呢,进入到这个方法里面来,CTRLT进来,进来以后呢,我们在这里面找一找它的a resolve name,哎,你看这里面有没有没有吧,没有的话说明什么呀,那个方法的实现并不是在它里面的,而是在负类里面,那你就再到负类里面去找,看看有没有。
04:30
找谁呀吧,你看你找了一圈啊,有没有。有没有那个方法呀,有一个create view是不是哎,创建一个尾U,但是你看一下有没有我们的resolve view内容呀,没有吧,那没有说明什么呀,说明还在它的副类里面,那我们还得去找它的这个副类是不是叫做我country vevo s,然后在这个里面我们再来看啊,注意了啊,仔细看了。
05:11
要没有。有吧?那说明什么呀?说明对于这个VO server这个接口的这个方法来讲,它是在我们的obstract VO server中来实现的,那我们就来看一下这里面是怎么实现的呢?大概呢,我们可以看一下他拿上一个师徒名字。能看懂吗?拿上一个师徒名字,然后呢,帮你去解析得到一个师图对象,怎么拿到一个师徒对象呢?最终呢,诶,他会去调用一个create尾用,如果说这个条件不满足,那么就他会执行我们的ELSE4里面的,ELSE4里面的话,他会什么通过,诶也是create用这种方式,最终呢,给你拿到一个什么视图对象,反正你要记住这个方法里面,它最终呢,会给我返回一个视图对象。
06:01
那么这个视图对象返回回来以后呢,接下来的操作就是我们刚刚给大家说过的,试图再去调用它里面的谁呀,扔的那个方法进行后续的一个处理了,明白吧,那么整个这个流程里面的话呢,我们可以从这个地方去看啊,在我们的dispatter of里面。我们看到啊,就是从这个位置,他要去解析得到我们的师徒名字,你看了哈,我从这个方法进去,进来以后的话,你会发现他会拿到所有的视图解析器,看到没有,因为我们刚刚说过,我们会有多个视图解析器吗?我拿到所有的视图解析器,挨个让这个视图解析器去调用这个方法,然后呢,把我们的视图名字传进去,最终得到一个视图对象,再把这个视图对象的远正回去,那么瑞正回去以后呢,它就诶正到这个位置了。能看到吗?所以说呢,这个地方其实就是通过一个视图解析器来解析得到我们的视图对象,接下来呢,就拿上我的视图对象,再去你看啊,下面整合输出你的模型数据。
07:11
明白这个流程了吧,啊,所以说呢,我们要知道视图是干嘛的,视图解析器又是干嘛的,以及他们里面相关的方法。对吧,其实每一个里面就有一个方法能记住了吧,这个啊,一个方法有啥记不住的啊,OK,那么这就是我们的视图解析器啊,相关的一些知识点。
我来说两句