码迷,mamicode.com
首页 > 编程语言 > 详细

spring mvc源码跟踪流程

时间:2020-06-17 19:46:03      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:rate   init   creat   hand   nta   containe   work   启动   register   

一、spring mvc的流程:

spi-Mete-info/接口 spring-web包里面META-INFO里面有个文件->SpringServletContainerInitializer - > AbstractDispatcherServletInitializer--onStartup->super.onStartup(servletContext)(监听器加载)
->registerDispatcherServlet(servletContext);(注册DispatcherServlet)

监听器容器启动的时候执行默认方法自动加载spring的配置:
ContextLoaderListener->contextInitialized()->initWebApplicationContext()->configureAndRefreshWebApplicationContext(spring容器的refresh执行)

registerDispatcherServlet->createServletApplicationContext(mvc的配置)->createDispatcherServlet(创建中心servlet)->
加载流程:
DispatcherServlet是一个sevlet所以从父类的init方法进入:
HttpServletBean->init->initServletBean->FrameworkServlet->initServletBean-> initWebApplicationContext->configureAndRefreshWebApplicationContext(执行spring容器刷新)


---- 到现在为止web中的监听器和DispatcherServlet全都可以加载了

二、mvc配置说明 - 注解配置通过钩子函数调用加载的,方法的registry就是框架内部已经实例化的
@EnableWebMvc - >DelegatingWebMvcConfiguration - >setConfigurers(WebMvcConfigurer接口的实现类注入进来)-> 父类WebMvcConfigurationSupport中所有的@bean注解方法->加载所有需要的类信息(handle)
@EnableWebMvc注解加载的handler赋值给DispatcherServlet?FrameworkServlet.ContextRefreshListener(初始化完成默认进来)->onApplicationEvent->onRefresh->initStrategies()赋值完成

三、映射关系的建立
handleMapping启动的时候会加载->AbstractHandlerMethodMapping->afterPropertiesSet->processCandidateBean()->detectHandlerMethods(url和方法映射)->

 

本文版权归原作者所有,不可商用,转载需要声明出处,否则保留追究法律责任的权利。如果文中有什么错误,欢迎指出。以免更多的人被误导。

spring mvc源码跟踪流程

标签:rate   init   creat   hand   nta   containe   work   启动   register   

原文地址:https://www.cnblogs.com/lean-blog/p/13154250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!