 |
|
Createsequence
V2EX member #545538, joined on 2021-05-17 10:28:06 +08:00
|
Createsequence's recent replies
这段时间也在看 Spring ,关于文章楼上已经提了不少了,这里我从个人的角度分享一点经验。
如果没有明确的目标,但是希望能够通过阅读源码,使得自己具备一定在工作或者面试中处理 Spring 相关的问题的话,从下面两点上手可能是比较快并且收益比较大的:
1 、Spring 容器的启动:入口是八股文说烂了的 refresh() 方法,不过把这个流程看懂,可以搞明白:
( 1 )了解 Spring 容器的体系:包括整个 BeanFactory 和 Application 体系的整体设计,以及一部分组件的存在(是的,知道这玩意存在可能本身也是一种收获);
( 2 )了解很多关键步骤发生的时机:比如配置文件的加载,环境的切换,国际化处理、事件的机制,以及一部分钩子函数调用;
2 、Bean 的创建:这个也是被八股文说烂的,不过确实也很重要,看懂以 getBean 方法的调用开始的整个 Bean 创建流程,可以搞明白:
( 1 )配置文件上的 Bean 到底是怎么完成依赖注入变成容器里面的 Bean 的(废话);
( 2 )一堆钩子函数,比如各种 PostProcossor 、Aware 还有其他回调的触发时机,这点尤其重要,因为 Spring 本身就是通过这边的各种回调把五花八门的功能缝合在一起的;
( 3 )进一步了解 Spring 容器的各种组件 /机制,以及这些它们所支持的功能,比如别名、FactoryBean ,三级缓存,还有类型注入(泛型解析机制),甚至是各种工具类;
从个人体验上来说,这两部分的 Spring 最核心的功能,先了解会对后续阅读 MVC 、AOP 、事务、事件等内容(一起其他八股文)会很有帮助,并且,如果平时会有需要在 Spring 环境下开发各种工具类和通用组件的需求,看完以后也会有一些新的感悟,发现一些新的玩法。