spring destroy方法什么时候触发
时间: 2024-05-18 15:12:49 浏览: 16
在 Spring 容器关闭时,会触发所有已初始化的 Bean 的 destroy 方法。具体来说,当 ApplicationContext 调用 close 方法时,容器开始关闭并触发 Bean 的 destroy 方法。如果 Bean 实现了 DisposableBean 接口,Spring 会调用其 destroy 方法;如果 Bean 配置了 init-method 和 destroy-method 属性,Spring 会在初始化 Bean 的时候调用 init-method 方法,在销毁 Bean 的时候调用 destroy-method 方法。如果 Bean 同时实现了 DisposableBean 接口和配置了 destroy-method 属性,那么 destroy-method 方法会覆盖 DisposableBean 接口的 destroy 方法。
相关问题
spring Bean
在Spring中,Bean是由Spring IoC容器实例化、组装和管理的对象。Spring容器可以管理singleton作用域的Bean的生命周期,包括实例化、初始化和销毁。对于prototype作用域的Bean,Spring容器只负责创建实例,不管理其生命周期。
Bean的生命周期包括以下几个步骤:
1. 根据配置信息调用Bean构造方法或工厂方法实例化Bean。
2. 利用依赖注入完成属性注入。
3. 如果Bean实现了BeanNameAware接口,则Spring调用Bean的setBeanName()方法传入当前Bean的id值。
4. 如果Bean实现了BeanFactoryAware接口,则Spring调用Bean的setBeanFactory()方法传入当前工厂实例的引用。
5. 如果Bean实现了ApplicationContextAware接口,则Spring调用Bean的setApplicationContext()方法传入当前ApplicationContext实例的引用。
6. 如果BeanPostProcessor和Bean关联,则Spring将调用该接口的预初始化方法postProcessBeforeInitialization()对Bean进行加工操作。Spring的AOP操作就是通过它实现的。
7. 如果Bean实现了InitializingBean接口,则Spring调用Bean的afterPropertiesSet()方法。
8. 如果在配置文件中通过init-method属性指定了初始化方法,则调用该初始化方法。
9. 如果BeanPostProcessor和Bean关联,则Spring将调用该接口的预初始化方法postProcessAfterInitialization()。此时Bean已经可以被应用系统所使用。
10. 如果在<bean>中指定作用域scope="singleton",则将该Bean放入Spring IoC缓存中,同时触发对Bean的生命周期管理。若作用域为prototype,则由调用者管理该Bean的生命周期。
11. 如果Bean实现了DisposableBean接口,则Spring会在销毁时调用destroy()方法将Spring中的Bean销毁。
12. 如果在配置文件中通过destroy-method指定了销毁方法,则Spring调用该方法销毁Bean。
在Spring中,可以使用XML配置文件来注册和管理Bean之间的依赖关系。通常使用<beans>元素作为根元素,并在其中添加<bean>元素定义Bean。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Spring中的Bean](https://blog.csdn.net/weixin_44949462/article/details/118897055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [spring bean是什么](https://blog.csdn.net/Kariswei/article/details/117085068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
spring 的生命周期
Spring Framework 的生命周期可以分为三个阶段:
1. 初始化阶段:当 Spring 容器启动时,首先会读取并解析 XML 配置文件,然后根据配置文件创建对应的 Bean 对象,并进行依赖注入和属性赋值等操作。在这个阶段,会调用 BeanFactoryPostProcessor 的 postProcessBeanFactory 方法,以及 BeanPostProcessor 的 postProcessBeforeInitialization 方法。
2. 运行阶段:在初始化阶段完成后,Spring 容器将所有的 Bean 对象全部创建完成,并且已经完成了依赖注入和属性赋值等操作。此时,可以对 Bean 进行各种操作,比如调用方法、修改属性值等。在这个阶段,会调用 InitializingBean 的 afterPropertiesSet 方法,以及 BeanPostProcessor 的 postProcessAfterInitialization 方法。
3. 销毁阶段:当 Spring 容器关闭时,会触发 Bean 的销毁操作,即调用 DisposableBean 的 destroy 方法。在销毁阶段,会调用 BeanPostProcessor 的 postProcessBeforeDestruction 方法。
总之,Spring Framework 的生命周期涉及到多个接口和方法,通过实现这些接口和方法,可以在不同的阶段进行各种操作和处理。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)