创建--》初始化(赋值)--》销毁
设置初始化和销毁调用函数
@Bean(initMethod="init", destroyMethod="destroy")
继承接口也可以实现初始化和销毁
public class Train implements InitializingBean, DisposableBean{
//...
}
JSR250规范方式
- 提供了两个注解,可以指定初始化和销毁调用的方法
@PostConstruct
public void init() {
}
@PreDestroy
public void destory(){
}
BeanPostProcessorsr
- 后处理器
public class MyBeanPostProcessor implements BeanPostProcessor{
// override...
}
- 把bean封装成wrappedBean
- 首先创建并初始化容器相关的processor(大部分Spring的注解都对应一个BeanPostProcessor),遍历
Spring
所有的处理器,调用processor的初始化方法 - bean赋值,注入其他组件,生命周期等功能都是这样实现的
容器启动过程
启动加载配置类-》refresh()->finishBeanFactoryInitialization()->getBean()->doCreateBean()->beanWrapper(对象创建)-》populated(属性赋值)->inializate()->processors