总结:四个阶段,实例化,属性赋值,初始化,摧毁。
为了更好的描述,写出下面伪代码;
class Person{
@Autowrite
private Eye eye
}
实例化:like Person p = new PerSon(); 相当于在内存的一块空间创建了对象,就是堆里面创建一个对象。spring 源码里面是一个BeanWrapper.,这里本人的理解就是开辟内存,但是不会根据构造函数来实例化对象。
属性赋值:就是将上面的Eye类 加载到Person类中。依赖注入。
初始化:相当于把赋值过的(个人理解是依赖注入好的)bean交给ioc容器管理,我们就可以拿到一个完整的bean了。这里就是调用构造器来创建真正的对象了。
摧毁:这个就是将bean毁掉。
每个阶段都存在后置处理器来进行切入,也就为我们开发者提供了一些改变spring原有流程的入口,说白了就是提高了拓展性
具体可以看看如下链接:
https://www.jianshu.com/p/1dec08d290c1