一、传统 Bean 的生命周期
- new实例化;
- 可使用了
- 无引用时,GC回收。
二、Servlet 的生命周期
- 实例化Servlet对象;
- init初始化对象;
- 相应客户端请求service()(doGet()与doPost());
- destroy()终止/销毁。
三、Spring Bean的生命周期
Spring中的bean的生命周期主要包含四个阶段:实例化Bean –> Bean属性填充 –> 初始化Bean –>销毁Bean
- Spring对bean进行实例化;
- Spring将值和bean的引用注入到bean对应的属性中;
- 如果bean实现了
BeanNameAware
接口,Spring将bean的ID传递给setBean-Name()
方法; - 如果bean实现了
BeanFactoryAware
接口,Spring将调用setBeanFactory()
方法,将BeanFactory
容器实例传入; - 如果bean实现了
ApplicationContextAware
接口,Spring将调用setApplicationContext()
方法,将bean所在的应用上下文的引用传入进来; - 如果bean实现了
BeanPostProcessor
接口,Spring将调用它们的postProcessBeforeInitialization()
方法; - 如果bean实现了
InitializingBean
接口,Spring将调用它们的after-PropertiesSet()
方法。类似地,如果bean使用initmethod声明了初始化方法,该方法也会被调用; - 如果bean实现了
BeanPostProcessor
接口,Spring将调用它们的post-ProcessAfterInitialization()
方法; - 此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
- 如果bean实现了
DisposableBean
接口,Spring将调用它的destroy()
接口方法。同样,如果bean使用destroy-method
声明了销毁方法,该方法也会被调用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131150.html