Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean。
SpringBean的生命周期简单分为:
实例化:如果是Beanfactory容器,在调用getBean方法时,beanfactory调用creatBean方法进行实例化,如果是ApplicationContent容器,在容器启动完成会获取BeanDefinition对象中的信息,实例化容器内所有的bean。
属性赋值:如果涉及到一些属性值 利用 set()
方法设置一些属性值。
根据实现Aware接口不同,
如果 Bean 实现了 BeanNameAware
接口,调用 setBeanName()
方法,传入 Bean 的名字。
如果 Bean 实现了 BeanClassLoaderAware
接口,调用 setBeanClassLoader()
方法,传入 ClassLoader
对象的实例。
如果 Bean 实现了 BeanFactoryAware
接口,调用 setBeanFactory()
方法,传入 BeanFactory
对象的实例。
初始化:
1.如果bean实现了 InitializingBean接口,则执行InitializingBean接口的方法afterPropertiesSet完成初始化,
2.调用bean定义的指定的初始化方法:init-method、@PostConstruct
使用:此时bean已经被创建了,可以使用bena。
销毁:1.执行DisposableBean中的destroy方法。
2.执行配置了bean自定义的@PreDestroy、destroy-method方法。