Spring Bean 的生命周期总体分为四个阶段:实例化 =》属性注入=》初始化=》销毁
实例化:
(1)实例化bean:根据配置文件中Bean的定义,利用java Reflection 反射技术创建Bean的实例!
属性注入:
(2)注入对象依赖的属性值或者对象
(3)处理各种Aware接口:Spring会检测该Bean是否实现了Aware接口,通过这个类型的接口,可以让Spring框架为当前Bean注入相应的内容。
初始化:
(4)执行BeanPostProcessor前置处理:如果想对Bean进行一些自定义的前置处理,那么可以让Bean实现了BeanPostProcess接口,将会在该阶段调用postProcessBeforeInitialization(Object obj, String s)方法。
(5)执行InitializingBean初始化方法:如果Bean实现了initializingBean接口,执行afeterPropertiesSet()方法。
(6)执行init-method自定义初始化方法:如果Bean在Spring配置文件中配置了init-method属性,则会自动调用其配置的初始化方法。
(7)执行BeanPostProcessor后置处理:如果这个Bean实现了BeanPostProcess接口,将会调用postProcessAfterInitialization(Object obj,String s)方法,由于这个方法是在Bean初始化结束后调用;
销毁:
(8)执行DisposableBean销毁Bean:当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法执行销毁;
(9)执行destroy-method自定义销毁方法:如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的自定义销毁方法。