若文中有任何不妥之处,请您帮我指出,大家一起交流学习,不吝赐教
本文讲述的方式是结合着源代码讲流程,所以源码会和流程一起前进
话不多说,直接进入正文(PS:原创,转载请注明出处 https://blog.csdn.net/F1004145107/article/details/78590847)
SpringMVC与Spring的集成
首先,我想先说一下SpringMVC与Spring的集成,我个人非常喜欢这块部分,所以想分享给大家,当然如果你只是想看一下SpringMVC的具体执行流程,那么请直接跳过即可看我的下一篇文章即可
毋庸置疑,SpringMVC的入口是DispatcherServlet,它的父类HttpBeanServlet(ps:请忽略这个绿色...我是个爱护眼睛的man)
也就是上面这一大坨东西,进来就能看到一个非常明显的方法init(),根据我那12级的英语水平我判断这个应该是一个初始化的方法(我赌5毛的),一下这个是用来完成初始化的,而且使用的是final修饰符,说明这个方法并没有准备让子类去扩展,而try{}代码块中的代码,很明显,这就是个加载配置文件的,有兴趣的朋友点进去看一下就好.
最后就是这个initServletBean()的方法了
这么大一个protected修饰符以及没有方法体,很明显就是告诉你这个活我安排我儿子去干了.果然,我们在FramewordServlet中找到了这个方法
简单的看一眼,除了红色框内的代码其余的都是在打印日志,说明只有这块在干活,initWebApplicationContext()这个从方法名上面看应该是在初始化容器,我们看一下
顺着代码往下走,这里有一个onRefresh()的方法,老套路,我们直接看它的子类实现
这个方法的实现就回到了DispatcherServlet中,上图的方法就是SpringMVC的策略(strategies)加载模式的具体实现