00:00
好,那下面呢,我们就来配置一下咱们当前的这个配置类,好,大家注意,那我们就先说咱们的spring config对吧?然后这里面呢,咱们因为没有进行spring和spring VC的整合,所以说咱们只需要把它给标识为配置类就行,也就是说你只创建一个类不行,我们在这咱们还需要干嘛呢?大家注意,来加上一个注解,叫做it configuration注解,然后这个注解的作用就是将咱们当前的这个类,然后标识为什么标识为配置类,如果说你不加这个注解,那它就是一个普通的类,它是没有任何功能的,知道吧?好,那我们当前咱们的这个配置文件的作用是用来干嘛的?大家说它是用来代替咱们spring的配置文件,OK。行,那下面呢,我们再来找到咱们的这个SPVC的一个配置类,叫做web con,我们在这咱们需要加的注解是一样的,都是要把它给标识为一个配置类,然后它的作用大家注意,它是用来代替谁的,来代替咱们spring mvc的配置文件啊。
01:11
OK,那我们现在咱们设置完了,那咱们就主要把它给配置一下,首先大家注意在这咱们需要来实现一个接口。这个接口它叫什么?它叫做MVC,叫做MVC。叫做web mvc config,大家注意啊,在这呢,叫做web mvc config,哎,行好,然后这里面它既然它没有让我们去重写方法,那说明啥?那说明我们当前咱们在这个接口里面,它的方法是不是应该都有一个默认的方法题,能看懂吧,好OK啊行,然后一会我们用到哪个方法了,咱们再说,那下面呢,我们再来想啊,既然我们当前的这个配置类,它是用来代替我们当前的配置文件的,那大家说我们之前咱们在配置文件中所能做的事情,咱们现在在这个配置类中是不是也能够去配置。
02:03
对不对,大家听好啊,我说的是我们之前在配置文件中所能配置的内容,我们现在在配置类中一定也是可以配置的,因为它毕竟是来代替这个配置文件的,是不是啊好啊好,那所以我们先来想第一个问题,就是说我们现在咱们在配置文件中,在spring VC的配置文件中,我们都配置过哪些内容?来大家看,首先第一个叫做扫描组件。这个没问题吧,扫描的是控制层组件,然后咱们的第二个内容叫视图解析器,没问题吧,然后第三个大家想一下叫什么,咱们按顺序来对吧,第三个是不是默认的solve that,然后来处理静态资源对不对?然后第四个是不是我们的MVC的注解驱动,注解驱动大家还有印象吧。好,然后还有什么,然后下面咱们是不是还配置了一个叫做视图控制器。
03:02
对不对,视图控制器咱们配置完之后,下面咱们又讲了什么叫做文件上传解析器。对吧?文件上传解析器讲完之后,然后我们又讲了一个叫做拦截器,对吧?拦截器讲完之后咱们又讲了一个叫做异常解析器,叫做异常解析器OK吧,哎,行,大家注意,这就是我们目前咱们在咱们的VC的配置文件中去配置的内容,如果说你要忘了的话,那大家就自己打开看一下就行,知道吧。比如说咱们再来看一眼啊,然后来找到我们spring mvc的配置文件。大家从上往下,这是不是来扫描组件,然后这是不是视图解析器,然后这个是默认的solvel,第三个,第四个呢,是MVC的注解驱动,第五个视图控制器,第六个文件上传解析器,第七个拦截器,然后第八个咱们的异常处理器,OK吧,行,这个大家看好啊,行,那我们现在咱们把这些写完之后呢?那我们既然咱们当前咱们的配置类是来代替spring VC的配置文件的,那换句话来说,我在配置文件中能做的事情,我在配置类中也能做,对不对?那咱们先看第一个扫描组件怎么做看好啊,这个东西我们不需要去写代码,不需要去写方法,我们只需要在咱们当前的类上加上一个注解,叫做it compound sc。
04:33
大家注意在这呢啊,叫做it component sc,然后这个就是扫描组件的注解,然后我们只需要在它的括号里面来把咱们要扫描的包给设置出来就行,知道吧,比如说我们在这咱们再来先创建一个包,这个包啊咱们就叫做control t,然后呢,咱们再来创建一个我们的控制层,叫做test con con controller,行,然后在这大家看一下,那我们当前比如说啊,Controller。
05:08
比如说我们当前,然后咱们的控制层,然后就在我们的这个com.a的硅谷点control这个包下,那我们直接把这个包给写进来就可以知道吧,叫做com.at硅谷点count control就可以啊行,这是扫描组件。知道吧,这是扫描组件的注解啊好。来扫描组件,好,然后这是咱们的第一个第二个视图解析器的话,咱们到最后再配置,因为这些东西啊,对吧,然后咱们直接去复制就行,因为本身咱们在之前去配置spring VC的配置文件的时候,就跟大家说过,视图控制器大家直接去配置。因为咱们配置的时候非常的麻烦呀,对不对,然后咱们的病里面是不是有属性,然后属性咱们是不是又创建了内部病,然后内部病中是不是又有内部病对不对这样的,所以说咱们一会儿直接就复制,大家能看懂就行啊。
06:05
好,在这呢,有一个叫做默认的solve,那这个东西咱们该如何去配置,大家注意来,我们现在咱们来找到我们当前咱们的这一个类中的抽象方法,咱们来一个CTRL加O,大家去找这些方法,你看哪一个方法的比较像是来处理咱们的默认的,是通过咱们默认的这个solve处理静态资源的,你看看啊。来大家看,你看这个方法在这是不是有个叫做configgu,然后default solve default solve handling能看懂吧,所以说咱们直接来重写这个方法就行,然后大家看这里面是不是有个config对象,Config参数。这个没有什么为什么,这就是我们在这里面重写的一些,他给我们提供的一些抽象方法,所以说我们在这只要把这个方法一重写,重写完,因为它有一个默认的方法体是空嘛,大家看你看这里面咱们的每一个方法的默认的方法体,它都是空,看到没有看到吧,里面什么都没有的知道吧,所以说我们现在你要想实现这个功能,那你就必须得去重写这个方法来实现。
07:12
然后conve点大家看,你看这里面有一个叫enable,这个enable来表示的就是什么叫做我们当前的这个配置可用,那你当前配置的是啥?就叫默认的solve的处理,知道吧,好,所以大家看这个咱们来设置的是谁叫做默认的solve来处理静态资源,然后来处理处理静态资源,OK啊行,然后下面呢,我们再来看第三个叫做MVC的注解驱动,那这个东西我们就不需要通过咱们的控,咱们当前这个接口里面的抽象方法来配置了。我们要想去配置它的话,大家只需要在哪呢?在我们当前咱们的类上也是通过一个注解来实现,叫做MVC啊,叫做以内web mvc,大家注意就这个注解啊,然后这个注解就是干嘛的,叫做开启,叫做开启MVC的注解驱动,注解驱动OK。
08:13
大家注意,这是我们当前开启MVC的注解驱动,它是通过咱们的一个注解来设置的啊好,下面呢,我们再来看叫做视图控制器,那视图控制器这个东西我们是不是应该是来为我们的某个请求来设置一个逻辑视图直接实现。页面跳转,那这个咱们怎么设置,大家看啊,找到我们的这个抽象方法,然后咱们在这往下去找呗,你看这是不是有一个叫ad view control了,看到没有,看到了吧,然后我们现在来把这个方法重写,大家看这个方法的参数里面是不是有一个叫做registry对象,然后registry,然后你看这里面是不是有一个叫ad啥view control,添加一个视图控制器。这叫做添加一个重定向的视图控制器,对不对,好,所以说我们现在呢,咱们直接然后在这呢,来设置我们的来添加这个ad view controller就行,来大家看啊,A d view controller。
09:13
能看懂吧,哎,行好,然后在这里面我们怎么去写,这里面传进去的一个参数叫string,然后URL pass or pattern,也就是我们当前咱们需要来处理的这个路径,请求路径,比如说我写个斜线,然后咱们在这再点,大家看你看这是我们要来处理的请求路径,这是我们当前要设置的视图名称。看到了没,叫做叫做set view name,这里面写个啥,写个index,大家说这不就完事了吗?这不就是来设置我们当前浏览器发送的请求,如果说为斜线上下文路径的时候,咱们所设置的逻辑视图就是index OK吧,行,这是用来设置谁的,叫做配置,然后咱们的视图解析器OK。
10:03
好,然后那我们再往下看,那在这咱们需要去配置一个叫做文件上传解析器,那文件上传解析器大家说它是不是就是一个B呢。对不对,这东西就是一个病,那如果我们现在咱们要想在这个配置类中去配置一个病的话,我们该怎么去配置,大家看好啊,非常简单,你直接来写个方法,它的返回值呢?干什么返回值来设置成我们当前这个bin的类型,那大家记不记得我们之前咱们用的这个文件上传解析器是什么类型,叫做commons multi partver。对不对,然后咱们的方法名,比如说我就叫做multi part OK,然后一个大括号。然后在这咱们直接来return一个new comments multi part,大家注意,就这就完事了。就这么简单,但是你得加上一个注解,叫做什么注解,叫做AB的注解。
11:03
能看懂吧,叫做it ban的注解,然后这个it b的作用是用来干什么的,大家看在这咱们写个注释,叫做it ban,这个注解可以将咱们标识的方法的返回值,然后来作为来作为bin,然后进行管理,作为B进行管理,知道啥意思,不就是说当我们现在设置了一个方法范回,咱们给它加上了一个A特bin这个注解之后,这个方法的返回值就是就会被配置到我们的IOC容器中来,作为一个bin进行管理,知道吧。那大家都知道B呢,它有啥呀,它是不是有ID,那我们当前这个方法所配置的bin,然后它的bin的ID是啥呢?看好方法名啊在这,然后B进行管理对吧?然后B的ad,然后为方法的方法名看好啊bin的ad,然后就是我们当前这个方法的方法名一定要看好啊。
12:07
好,然后那这是我们当前的一个文件上传解析器,大家注意以后如果说我们要是有病的话,咱们如果说需要去配置一个病的话,大家就直接这样去配置就可以知道吧,好。来,咱们把这个注解给它加到这儿啊,行,那这是我们当前的文件上传解析器,那下面呢,咱们需要来配置拦截器,那这个拦截器该怎么来配置呢?首先咱们在这先来创建一个拦截器啊,比如说叫做inter cept,然后点叫做fire first OK,行,然后我们是不是需要让他去实现一个handle the intercept接口。能看懂不,然后我们现在咱们是不是需要来重写其中的三个抽象方法对不对。然后CTRL加O,把这三个方法咱们都给它选中啊,然后在这咱们一定要返回一个处啊,你想测试的话,大家就去测试一下,你不想测试的话,我在这就给大家配置一下就行,知道不?这东西该怎么去配置呢?首先呀,大家看它是一个并不它不是一个啊,咱们可不可以把它当做是一个并来配置呢?不行,因为我们是需要通过MVC冒号intercepts标签,这是我们之前在配置文件中对不对,然后咱们需要是是需要这样去配置的,那我们现在在这个配置类中,咱们怎么配置呢?大家看。
13:36
来找到我们当前咱们的这个抽象方法啊。那下面咱们来找到我们当前咱们的抽象方法叫做CTRL加O,来大家找找,你看这里面这多明显,在这是不是就有一个叫a dt intercepts的方法对不对,然后咱们来重写一下,然后大家注意看这这这叫啥?这叫一个registry,叫做叫做拦截器的一个注册器,那我们现在呢,你看这里面都有什么方法,点ad intercept看到没有。
14:08
看到了吧,直接添加的就是一个interceptcept对象,那所以说我是不是只需要在这个地方first intercept first intercept等于new,一个first intercept就完事了。好,然后设置完之后,把咱们当前的拦截器呢给放在这个方法中,然后后边大家再来看,你看点看这里面都有啥,都有什么方法点a pass patterns干什么的,来设置我们当前咱们需要去拦截的路径,知道不看长度可变的参数列表,比如说我们在这来设置一个杠星星。有印象吗?杠星来表示的是一层目录,杠星星来表示的是任意层目录,知道吧,所有请求,然后再点,大家看这有一个叫exclude pass patterns什么意思,这不就是排除我们对某一个请求的拦截嘛,对不对,对吧,所以说大家看这就跟我们之前咱们通过叉L配置是一模一样的。
15:08
只不过我们之前用的是标签,现在咱们用的是一个类类中的方法,对不对,好啊。行好,那我们在这咱们就配置到这个地方就行,咱们让我们的first intercept对咱们所有的请求进行拦截啊。好,那下面呢,我们再来看,然后拦截器配置完之后,咱们最后还有一个叫做异常解析器,那这个东西啊,那就更简单了,对不对,因为异常解析器它就是一个病,所以说我们现在咱们是不是也是配置一个方法。对不对,或者说咱们这样啊,咱们不不能光看它是一个病啊,咱们先找找这里面有没有这个抽象方法吧,行不行,好然后大家看啊,叫做handle着叫做exception exception啊。来。哎,大家看你看它在这有,它在这有一个叫config,什么handle the exception,那咱们是不是还不能把它给配置为一个病的,对不对,对吧,好,那所以咱们在这咱们就大家来看一下,咱们就这样去写啊好,你看它的方法的参数呢,然后有一个叫做resource,是一个list子的集合,我看一下是不是这样配的啊。
16:17
好,咱们来找到SPVC的这个配置类。然后大家看,就叫这个叫config,然后handle the exception resource没问题,然后我们现在咱们也是需要去创建一个什么叫做异常处理器,那我们spring VC为我们所提供的这个我们自定义的异常处理器是谁呀?大家想一下。是不是叫做simple,然后mapping exception overver,对不对,然后我们在这咱们先把它给创建出来,然后创建出来之后,然后我们是不是就可以来设置其中的属性了,这个大家还记得不?咱们设置的属性有两个,一个叫做exception mappings需要在这里面设置一个properties对象,那我们就设置呗,叫properties,然后叫P等于,然后等于另一个properties OK,然后呢,Properties里面来设置的叫异常映射,那我们的键是不是应该是我们当前咱们的什么呢?点set,大家看啊,Property,这是我们当前要处理的异常。
17:23
比如说咱们再来搜索一下arithme,然后把他的这个全类名复制过来好。OK,然后咱们再往后看,然后这是它的值,是不是咱们设置的是我们的一个叫什么叫逻辑视图,要跳转的页面的逻辑视图,那咱们就叫error。OK,没问题,然后把这个PP给放进来,放进来之后我们需要第二个来设置的属性,是不是应该是我们共享咱们的异常信息的请求域中的属性,叫做set exception attribute,能看懂吧?比如说在这咱们就叫ex,大家注意,这就跟咱们之前配置的异常处理器一模一样。
18:02
知道吧,最后干什么?把我们当前所创建的这个异常处理器,然后点addd,把它给添加到我们当前这个方法的参数中,参数的这个集合里面就行,知道吧,叫做exception over OK,就这就完事了。好,所以说这个是用来配置谁的,来配置咱们的异常解析器的。OK吧,来配置异常解析器啊。行,OK,那所以我们现在咱们在咱们的spring VC的配置文件中能配置的内容,那我们现在咱们在配置类中也能配置,咱们还剩下最后一个视图解析器,那咱们来看一下这个视图解析器该如何配置啊好,那咱们直接来找到咱们的笔记,大家注意从这开始就是来配置我们的视图解析器的。来CTRLC,然后呢,把它给复制过来,因为咱们的视图解析器,它本身呢,它就是一个什么,就是一个类嘛。对不对,它就是一个病,所以说我们在这咱们就配置了三个方法,每一个方法上咱们是不是都加上了一个并标签对不对,好,大家看你看哪一个方法是来返回视图视图解析器的,是不是这个方法对吧?然后那我们在创建视图解析器的时候,咱们是不是需要去创建一个啥,需要去为我们的哪个属性赋值,叫template engine,叫做template叫模板引擎,那所以我们现在咱们是不是就得需要先干什么,需要先来创建一个模板引擎,所以说咱们这里面就有了一个spring的模板引擎的一个B。
19:35
能看懂吧,好,这个大家注意,因为我们当前的你看,那我现在如果我的这个对象。大家看,如果我当前我的这个view resource的对象,如果他要是依赖咱们的某一个属性的话,大家就可以直接把它放在参数位置,这就相当于我们来为view reservever里面的某个属性来进行了赋持,知道不?哎,大家看我要为这个属性赋持,那我现在不是为某个属性复制,说错了啊,大家注意,它就相当于我们当前来引用了我们IOC容器中的某个B,那咱们引用的是某个B,哪一个B呢?大家看,你看这个参数的名字是不是叫template engine对不对?好,然后它的名字,它是根据咱们当前的这个参数的名字去找到我们相对应的这个方法的名字的,比如说他的名字跟他的名字是一样的。
20:26
是不是好,那所以说我们就会把这个方法的返回值,然后来为我们的这个参数进行赋值。OK吧,行,然后这里面是同理,我们在创建咱们的模板引擎的时候,我们需要去设置一个模板解析器,我们当前咱们上面这个方法就是来创建模板解析器的,知道不?所以说大家看你看这个方法的这个参数的名字,然后是不是跟咱们这个方法的名字是一样的,对不对,对吧?啊,为什么?就是因为我们在通过这个a bin注解,然后来这个管理bin的时候,然后我们就是通过这样的方式,然后来引用我们的某个bin的,然后我们需要把我们当前咱们的这个方法,然后它的参数来设置成我们当前需要来访问,需要来使用的某个bin的类型,来保证我们当前咱们的参数名跟咱们的某个提供bin的这个方法的方法名一致就可以知道吧,这样的啊好OK,那这个就是我们当前的一个视图解析器,那它配置的话就比较麻烦,因为大家看你哪怕我们之前咱们来使用谁呀。
21:33
我们之前如果说我们来使用咱们的这个web点叉L来配置,其实它也不简单呢,对不对,我们现在咱们所配置的是咱们的视图解析器中,我们需要用到一个叫做叫做模板引擎,我们在创建模板引擎的时候,需要用到一个模板解析器,大家看这个配置文件,你看它设置的是不是啊。首先这个B是一个视图解析器,它是不是需要用到一个视图引,叫做模板引擎,能看懂吧,叫time play的N,然后在我们去创建咱们的模板引擎的时候,它是不是又需要用到一个time play的recoverver,叫模板解析器,对不对?所以说效果一模一样啊。
22:14
好,那我们现在呢,咱们这些所有该配置的内容咱们就配置完了,那我们在这呢,咱们在外部APP下,然后来创建一个,谁创建一个目录啊,We部in符下来创建一个,哦不对,这个工程选错了啊,应该是我们在这的这个工程,然后来创建一个目录,这个目录呢,咱们就叫做tenate,然后下面咱们就来看看首页能不能访问到就可以啊,其他的功能大家可以自己去测试一下index,然后这个是首页,然后下面H1,然后index.html就可以。好,然后我们把它给部署到我们当前的工程,咱们的tomcat里面。好叫做spring mvc,然后aation对不对,然后咱们的上下文路径呢,咱们给它设置为spring mvc。
23:05
好,然后这个应该是第三个,这个是第三个啊,然后我们下面咱们来重新启动一下,咱们主要呢,就是来看一下啊,它能不能实现功能,能不能像我们之前,然后我们在使用咱们的叉L去配置的时候,它的功能是一样的啊啊。咱们只做一个访问首页的功能,其他的功能的话,大家下去可以自己去测试一下啊,应该是没有任何问题的啊好。好,大家来看一下首页,咱们是不是就可以访问得到啊。对不对?你看我们现在咱们来访问的就是我们的这个通过注解来配置的spring VC,然后我们来访问首页是不是确实可以访问到咱们的index HTML,对吧?那说明我们当前咱们总体上咱们的这个过程是没有任何问题的,我们先来创建了web in来代替web的XML,在其中呢,咱们去设置了我们代替spring spring的这个配置类,然后呢,再设置了spring VC的配置类,然后又设置了我们的dispa of的URL pattern。
24:12
然后又把咱们的两个过滤器呢给配置进来,然后去配置我们当前spring m VC的这个配置类,大家要注意,你现在你创建的配置类是去代替spring VC的配置文件的,那所以说我们在spring VC的配置文件中,你能做的事情,我们现在咱们用配置类也可以实现,就比如说我们在这来写的这八个内容,我们现在是不是都把它给配置到咱们的配置类中了,OK吧,行啊。好,那这个就是咱们的spring注解来配置spring VC,然后呢,大家也是最主要就是多去动动手,然后多去配置一下,因为这种方式咱们现在用的不多,但是我们以后用的肯定是非常多的,知道吧,以后啊,我们用的这种方式一定是最多的,其实就是通过我们的配置类,然后来配置spring或spring VC,知道吧,行,所以这个东西大家一定要先动动手,就算咱们现在不用,但是大家呢,也可以先练习一下,有些东西既然你一定要学,那咱们早学肯定要比晚学要好,对不对,好啊。
我来说两句