当前位置 博文首页 > L-Java:Spring MVC 初始化源码(3)—<mvc:annotation-driven >
??基于最新Spring 5.x,详细介绍了Spring MVC 初始化流程的源码,主要包括<mvc:annotation-driven >配置标签的源码解析。
??我正在参与CSDN《新程序员》有奖征文,活动地址:https://marketing.csdn.net/p/52c37904f6e1b69dc392234fff425442。
??此前我们讲过了DispatcherServlet与子容器的初始化以及MVC组件的初始化,我们说过如果IoC容器中存在给定类型的组件,那么DispatcherServlet#onRefresh()
方法中就不会尝试初始化默认组件了。
??而在初始化IoC子容器的时候,将会解析Spring MVC的配置文件,在配置文件中就有可能初始化我们自定义的一些组件bean,也有可能会加载其他MVC配置标签,最常见的就是<mvc:annotation-driven >
标签,实际上该标签就会向容器注册一些组件bean,并且还会进行额外的配置。
??<mvc:annotation-driven>
标签为基于注解的SpringMVC驱动提供便捷配置,虽然Spring mvc5版本之后Spring MVC会默认加载大部分的默认组件,但是使用该标签仍然能够自动加载某些额外配置,比如自动发现并注册MappingJackson2HttpMessageConverter
转换器以支持JSON数据交互的请求和响应。
??mvc系列标签同样属于扩展标签,根据我们此前学过的IoC容器初始化源码,扩展标签将会在IoC容器初始化的parseCustomElement
方法中解析,mvc标签的解析器位于MvcNamespaceHandler
类中:
??可以知道<mvc:annotation-driven >
标签是由AnnotationDrivenBeanDefinitionParser
这个解析器来解析的。
??下面的源码版本基于5.2.8.RELEASE
。源码解析基于传统的SSM项目,不适用于Spring Boot项目。
Spring MVC 初始化源码(1)—ContextLoaderListener与父上下文容器的初始化
Spring MVC 初始化源码(2)—DispatcherServlet与子容器的初始化以及MVC组件的初始化【一万字】
Spring MVC 初始化源码(3)—<mvc:annotation-driven >配置标签的源码解析
Spring MVC 初始化源码(4)—@RequestMapping注解的源码解析
Spring MVC 请求执行流程的源码深度解析【两万字】