Spring Boot相信很多做开发的朋友在工作中都使用过,即使你之前没有接触过Spring Boot但是了解一般web项目开发规范,稍微学习一下很快就能上手,所以经常听周围的朋友这样说,Spring Boot的确给我们开发带来了很大的便利,便利的原因是它把很多模块进行了封装,类似项目的脚手架,很大程度上简化了项目的开发,上手起来非常容易,但是如果想深入了解Spring Boot的工作原理,还是需要花费大量的时间和精力去阅读源码及实践验证。
我们项目中也使用了Spring Boot 2.0.2,平时一般都是业务功能模块的开发,基本上没有去更深层次的去研究学习源码。仅仅停留在一般的使用阶段。如果一直处在简单使用这个阶段,那么即使做再多的功能模块,全都是一样的套路,对自己技术能力的提升没有一点帮助。所以如果想在技术这条路走下去,肯定是需要花费时间和精力去对一些优秀框架进行深入学习。相信很多朋友的情况基本都是这样,平时上班工作上事情比较多,根本没有时间去了解学习框架的底层运行原理,大部分都以功能的快速实现为目标。所以我一般是利用周末时间去学习,有工作中用到的技术,也涉及一些工作中没有使用到的技术。Spring Boot中webmvc模块在web项目中处于非常核心的位置,平时工作中接触也非常多,我觉得非常有必要对这个模块的运行原理进行了解和学习,所以决定花时间去学习一下这个模块的源码。
先简单说一下阅读框架源码的好处:
1、通过对源码的学习,我们可以更深入地了解框架运行的原理,对框架使用过程中如果出现问题,也知道怎么去排查问题。
2、同时阅读源码,我们可以学习到那些优秀工程师代码结构、编码规范及设计模式的具体应用。然后把一些好的设计理念及规范应用到自己的项目中去。
3、如果对框架有深入的研究,对开阔自己视野也有很大帮助,在框架某些功能不满足需求时,还可以进行定制开发。
4、阅读框架源码非常有助于技术能力的提高,经常阅读优秀的框架源码,编程思维也会潜移默化的得到提升。
本篇内容先介绍到这里,下一篇开始webmvc模块源码的学习。
/**
* Template method which can be overridden to add servlet-specific refresh work.
* Called after successful context refresh.
* <p>This implementation is empty.
* @param context the current WebApplicationContext
* @see #refresh()
*/
protected void onRefresh(ApplicationContext context) {
// For subclasses: do nothing by default.
}
/**
* Initialize the strategy objects that this servlet uses.
* <p>May be overridden in subclasses in order to initialize further strategy objects.
*/
protected void initStrategies(ApplicationContext context) {
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
initFlashMapManager(context);
}