参考博客:https://www.cnblogs.com/redcool/p/6397398.html
主要流程
1、bean实例创建
2、给bean属性赋值
3、如果bean实现了Aware相关接口如,BeanNameAware, BeanFactoryAware, InitializingBean, ApplicationContextAware就调用相对于的初始化方法
4、通过容器使用bean
5、容器关闭时候,调用bean的销毁方法,在AbstractApplicationContext中调用destroy方法。
bean的初始化方法调用在AbstractAutowireCapableBeanFactory类中的initializeBean方法中进行。
bean设置lazy-init时候加载流程:
1、BeanFactory
2、AbstractApplicationContext ->refresh() ->finishBeanFactoryInitialization(beanFactory); ->beanFactory.preInstantiateSingletons();
3、最后调用getbean()方法
相当于初始化的时候调用getBean()进行实例化bean。