一、常用的
(一)、创建
- 构造方法
- BeanPostProcessor.postProcessBeforeInitialization()
- @PostConstruct
- InitializingBean.afterPropertiesSet()
- init-method
- BeanPostProcessor.postProcessAfterInitialization()
(二)、销毁
- @PreDestroy
- DisposableBean.destroy()
- destroy-method
二、更详细的
(一)、创建
- 构造方法
- Setter方法
- BeanNameAware.setBeanName()
- BeanFactoryAware.setBeanFactory()
- ApplicationContextAware.setApplicationContext()
- 调用BeanPostProcessor的预先初始化方法,如下:
BeanPostProcessor1.postProcessBeforeInitialization
BeanPostProcessor2.postProcessBeforeInitialization
BeanPostProcessor3.postProcessBeforeInitialization
… - @PostConstruct
- InitializingBean.afterPropertiesSet()
- init-method
- 调用BeanPostProcessor的后初始化方法,如下:
BeanPostProcessor1.postProcessAfterInitialization
BeanPostProcessor2.postProcessAfterInitialization
BeanPostProcessor3.postProcessAfterInitialization
…
备注
Bean创建过程中的“实例化”与“初始化”概念
- 实例化(Instantiation): 生成对象,如new对象(调用构造器)(内存中分配地址给该对象)
- 初始化(Initialization): 对象已经生成.,赋值操作(注意:不是setter方法,可以理解setter方法后做的其他赋值操作),如
InitializingBean.afterPropertiesSet()
和init-method
即为初始化操作
先实例化,再初始化。 详细:构造器 -> setter -> 初始化操作