一、访问Spring官网:Spring Framework
二、下载Spring源码:spring-framework/spring-beans at main · spring-projects/spring-framework · GitHub
三、引入idea,加载依赖
四、Spring-beans调用依赖查看
IntelliJ IDEA中可以在主菜单中选择Navigate | Call Hierarchy命令查看一个Java方法调用树(caller和callee两个方向),但是不像Eclipse那样可以查看类成员变量的调用树。
详情参照:IDEA的查询引用、调用关系图的功能 - 蝈蝈俊 - 博客园
五、源码解析
Spring就是采用反射的方式来创建Bean。Spring Bean的创建包括了实例化
、属性赋值
、初始化
,经过以上三步就能完成Bean的创建。
在Bean的生命周期中,会有9个BeanPostProcessor以及一些可以拓展的接口。
这些后置处理器干嘛用的?说白了就是每个Bean创建时候都去遍历一下当前的后置处理器,看是否需要被处理一下。遍历的时机也是有好几处。
有了拓展点以外,还有一个棘手的问题就是Bean间循环依赖(A依赖B,B依赖A)的问题,以及循环依赖下AOP(需要创建代理对象,并把代理对象赋值给被依赖Bean)。为了解决这个问题,Spring是借助一、二、三级缓存和后置处理器来实现的