我一直对自己也对别人说,在你刚开始接触某件事物时,知其然而不知其所以然这是没有任何问题的,毕竟透过现象看本质这需要经验的累积与沉淀,然而,在我们编程这个行业,有太多工作三年,五年甚至更久的同学对自己经常所使用接触的技术还停留在会用的阶段;
然而这些同学自认为自己的技术已经登峰造极,认为自己的能力水平早已达到高级工程师,高级架构师的水准,而本质上呢?本质上对各种技术的实现原理是一窍不通,不说网络通信和各种中间件的实现,就拿最常用的Spring来说,你的Bean是怎么生成的?IOC容器又是怎么来管理Bean的?Spring是怎么帮我们完成自动AOP的?你怎么来扩展Spring框架? 这些你都知道吗?
你可能会问,我要知道这么深的原理有什么用呢?根本没必要嘛!
是的,在开始使用某项技术时,你完全不需要知道原理,只要知道这么去用就对了,但随着时间的累积与公司的要求,你总会需要对某项技术或框架进行扩展与改动用来满足业务要求,这时候,你就必须知道各个步骤间的运作原理了;而且,是框架就会出现问题,或是配置错误或是代码错误又或者是环境问题,总之当出了问题的时候,你若不明白原理又怎么来快速定位解决问题呢?
针对这些原因,我准备写数篇关于各类框架和中间件的运行原理文章,用来巩固自己的知识与经验分享, 我们先从最常用的Spring应用平台的基础与各种组件的实现原理开始讲起,在文章中我会配合Spring的源码与类图以及时序图尽可能的将各个步骤讲清楚。
所以,你准备好阅读Spring的源码大餐了吗!
:要想调试maven下载的spring源码,请阅读我的另一篇文章 maven源码调试工具
:我采用的Spring版本为4.1.6.RELEASE
Ok,我们来看一下Spring解析系列文章的大概内容吧;
至于Spring的整体面貌这里就不说了,网上一大堆...
话不多说,让我们从Spring的基础IOC的实现开始讲起吧!