目录
1.学习内容
2.一般认识SpringMVC
3.SpringMVC重新认识 核心组件
4.Web MVC 注解驱动
@EnableWebMvc模块注解说明
5.自定义组件 : WebMvcConfigurer (Spring Bean)
6.Spring MVC相关的注解
7.WebMVC的自动装配 即使在Spring MVC的时代,我们也可以实现自动装配
8.SpringBoot时代的简化
1.学习内容
Servlet的特点:
2.一般认识SpringMVC
3.SpringMVC重新认识 核心组件
webMVC核心组件
注意处理器Handler具体指的就是方法。
我们可以通过读源码发现,这些核心的组件都是在DispatcherServlet里面初始化了的
随便打开一个初始化的方法:
SpringMVC的交互流程图:
断点调试源码:
DispatcherServlet 的入口方法:
第二步就是通过HandlerMapping选择一个Handler,handlerMappings这里就只有一个满足条件的类,就是我们配置文件里面配置的。
选择出的HandMapping是我们配置文件里面配置的RequestMappingHandlerMapping,然后通过RequestMappingHandlerMapping去 choose Handler, 这个Handler上面组件说过是包含
处理器Handler(这里指的就是HelloWorldController 的index方法),和intercepors列表(这里是null,也就是没有注册得有拦截器)
接着进入第三步,进入到handlerAdapter, 这里加载的也是我们在配置文件里面配置的RequestMappingHandlerAdapter
第四步第五步会走程序员自己去实现的逻辑,然后进去=入到第六步,
完了之后就会去渲染页面。
拦截器 过滤器的执行顺序:
4.Web MVC 注解驱动
基本配置步骤
注解配置: @Configuration ( Spring 范式注解 )
组件激活: @EnableWebMvc ( Spring 模块装配)
自定义组件 : WebMvcConfigurer ( Spring Bean )
将配置文件去掉,加上一个配置类,开启MVC功能。
这个时候再启动项目,让他自动装配组件进来,他会装配很多得组件进来。
视图解析器的前缀和后缀还没有配置,所以这里为空的,所以请求会返回404,找不到资源文件。
从xml转换到Bean:
然后就可以找到这个视图解析器,就不会出现404了
@EnableWebMvc模块注解说明
这个注解怎么就把那些组件给注入到DispatcherServlet了呢进去了呢,可以看上一篇博客介绍的走向自动装配
这是通过注解实现的Enable模块装配
通过@EnableWebMvc这个注解就已经把Bean加入到容器中了
然后在这里就加入到了DispatcherServlet了
5.自定义组件 : WebMvcConfigurer (Spring Bean)
WebMvcConfigurer里面就可以加入自定义的组件,比如说拦截器。WebMvcConfigurer有一个默认的实现,但是已经被弃用掉了,因为里面的实现都是空实现,没有意义,会增加类的使用量。
i
实现这个接口:
添加拦截器,拦截器在Handle之前执行,我们说过Handle就是Controller里面的方法,所以这个在Controller的方法执行之前执行,
现在需要思考一个问题就是这个拦截器类是如何注入进去的。
@EnableWebMvc注入,required等于false,当这个实现类不存在的时候也是可以接受的。
真正的调用其实在这里
然后就会掉到我们自己实现的拦截器的逻辑
6.Spring MVC相关的注解
注册模型属性: @ModelAttribute
读取请求头: @RequestHeader
读取 Cookie : @CookieValue
校验参数: @Valid 、 @Validated
注解处理: @ExceptionHandler
切面通知: @ControllerAdvice
这样更方便,ModelAttribute方法先处理,handle方法后处理。
7.WebMVC的自动装配 即使在Spring MVC的时代,我们也可以实现自动装配
条件:但是我们大多数的人不会用这个裸接口来编程
我们会用Spring的 SPI
注释掉:
8.SpringBoot时代的简化