首页 > 编程语言 > 详细

spring mvc源码跟踪流程

时间:2020-06-17 21:24:56      阅读:63      评论:0      收藏:0      [点我收藏+]

一、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源码跟踪流程

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!