初始化和销毁方法、spring初始化后处理器

spring 支持了三种初始化和销毁方法
1、加注解。@PostConstruct 和 @PreDestroy
这种初始化方法最先执行,是初始化后处理支持的,具体实现类
org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor#postProcessBeforeInitialization
销毁方法:org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor#postProcessBeforeDestruction
2、实现接口。InitializingBean,DisposableBean
初始化方法会在所有初始化后处理执行完之后执行,这个就是判断一下当前bean是否是InitializingBean类型
销毁方法:销毁每一个单例的时候会判断是否实现了DisposableBean ,实现了就回执行销毁方法
3、通过@Bean指定。 @Bean(initMethod = "init1",destroyMethod = "destroy1")
自定义的方法是最后执行的。

销毁方法需要调用容器关闭方法,要不然是不会执行

BeanPostProcessor bean的后置处理器
postProcessBeforeInitialization 初始化前的后置处理器,处理Bean时机属性赋值之后,init方法之前,可以将处
理后的bean作为原来bean的替代者。如果有多个后置处理器,则会遍历所有的后置处理器,如果有一个后置处理器返回null
返回上一个后置处理器处理的bean
postProcessAfterInitialization 初始化后的后置处理器,处理bean的时机是定义的初始化方法之后,如果有多个后置处
理器,则会遍历所有的后置处理器,如果有一个后置处理器返回null返回上一个后置处理器处理的bean

原文地址:https://www.cnblogs.com/mao-yan/p/13614913.html