Spring Bean 生命周期
2018-12-25 本文已影响19人
杰哥长得帅
- Spring IoC 容器根据配置文件的定义顺序来实例化 bean
- Spring 根据 bean 的定义填充所有的属性
- 如果 bean 实现了 BeanNameAware 接口,将调用该接口的 setBeanName 方法,该方法传递该 Bean 的 ID(用于指定 Bean 的名称,在 Bean 被依赖时使用,在获取 Bean 时使用等)
- 如果 Bean 实现了 BeanFactoryAware 接口,将调用该接口的 setBeanFactory 方法,该方法传递 BeanFactory 实例对象
- 如果有任何与 bean 相关联的 BeanPostProcessors,Spring 会在 postProcesserBeforeInitialization() 方法内调用它们
- 若 bean 带有 @PostContruct 注解的方法,且 Spring 开启了注解扫描,将执行该初始化方法
- 如果 bean 实现了 IntializingBean,调用它的 afterPropertySet 方法
- 如果 bean 添加了 init-method 属性,调用此初始化方法
- 如果有 BeanPostProcessors 和 bean 关联,这些 bean 的 postProcessAfterInitialization() 方法将被调用
- bean 创建完成
- 若 bean 对应的 Java 类带有 @PreDestroy 注解方法,该方法将被调用
- 如果 bean 实现了 DisposableBean,它将调用 destroy() 方法
- 若 bean 添加了 destroy-method 属性,该方法在对应的 Java 类中将被调用