spring 的生命周期
目的
ms当中经常问到,spring 可以说是java程序员必定会用到的东西,然而只知其然不知所以然,理解生命周期的作用,为啥要这么设计,可以借鉴生命周期哪些更高层次的编程,可以吊打面试官
实例初始化前后调用的方法
-
实例化 beanFactoryPostProcessor
bean工厂后处理器
工厂处理器肯定比bean先实例化 -
实例化 beanPostProcessor
bean后置处理器
-
实例化 instantiationAwareBeanPostProcessorAdapter
实例化感知的bean后处理器适配器
-
执行 instantiationAwareBeanPostProcessor.postProcessorBeforeInstantiation
实例化感知的bean后处理器
在实例化之前的后处理器方法
在目标bean被实例化之前,应用这个beanPostProcessor -
执行bean构造器
bean正式被实例化
-
执行 instantiationAwareBeanPostProcessor.postProcessorPropertyValues
实例化感知的bean后处理器
后处理器属性值的方法
在工厂将给定的属性值应用到始定的bean之前,之后进行bean的属性值注入,致辞java对象实际已完成实例并给bean管理,但是bean还不可用 -
调用 beanNameAware.setBeanName() 方法
先设置bean 的name
-
调用 beanFacotryAware.setBeanFacotry()方法
在设置bean 的工厂
-
执行 beanPostProcessor.postProcessorBeforeInstantiation()方法
后处理器实例化之前的方法
-
调用 initializingBean.afterPropertiesSet 方法
在它设置了所有bean属性之后,由beanFacotry 调用
-
调用 bean.initmethod的属性指定,初始化方法
-
执行 intantiationAwareBeanPostProcessor的postProcessorAfterInstatiation方法
在bean 通过构造方法或通过工厂方法实例化后执行操作,但是在spring (从显式属性或自动化状态)属性出现之间
-
初始化成功
程序可以使用这个bean了,后面可以销毁了,调用DisposableBean.destory 方法
被一个beanfacotry 调用以破坏一个单例对象
调用bean的 destory_method 的方法,指定销毁方法