看到很多招聘信息上都有要求对spring 框架源码的理解,想问一下如何系统的去学习spring框架的源码,或者更宽泛的说,如何系统的去学习个很庞大的开源框架的源码
1.找个比较干净的spring版本,比如2.5.6
2.搞明白spring的大致原理(IOC),避免源码阅读不知所云,毫无条理,核心是要了解ioc的大致架构,核心服务和常用的扩展点
3.BeanFactory的new方法入手了解容器是如何初始化(资源加载策略、校验策略、注册机制),同时也会了解到如何通过平台化的方式支持自定义的bean(handle、namespace)
4.BeanFactory的get方法入手去了解如何去生产和托管对象(装配机制、生产机制、作用域机制:scope的面纱),同时你会发现原理上看到的那些扩展点BeanPostProcessor、InitializingBean的使用场景和使用意图,获取源码里面还发现了不为人知的秘密: nestedBw
5.了解了整个Bean的生产机制,也明白了若干拓展点的使用场景和意图,那么FactoryBean可以用来干嘛,AOP的编织入口在哪里,也就一目了然了
6.可以参考:https://my.oschina.net/tryUcatchUfinallyU?tab=newest&catalogId=300810(之前自己学习轨迹)
首先要了解设计模式,这个是阅读大师源码的一个桥梁,很多代码看上去很多,其实就是一种模式。了解了模式后,整个关系图就清楚了。
还有善于分片阅读,找简单的读,可以先读spring jdbc,这部分的模板跟回调看起来会简单点。
然后再看IOC,看IOC之前必须对spring IOC原理掌握的很透彻,怎么扩展,怎么写胶水代码整合其他框架。建议熟读Spring-Reference。
然后再读源码,先学习怎么写出漂亮的代码,再学习怎么设计出漂亮的模式。
1.决定要学习的模块,查找官方文档、相关的总结文章,整理出大概的学习内容与目标
2.运行程序,观察表现
3.运行源码,断点调试,从头跟一边源码的执行流程,注意函数堆栈
4.画类图、流程图,先把遇到的重要类记录下来,表明各个类的关系
5.记录问题,把不理解的类或者内容以问题的方式记录下来
6.写文章、笔记,尝试逐个解决之前遗留的问题
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。