Spring Bean的生命周期,《Spring 实战》书中的官方说法

连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试。这里找到了Spring 实战中的官方说法。希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看看源码最好(也包括我自己)。哈哈

Spring Bean的生命周期,《Spring 实战》书中的官方说法_第1张图片

 

Bean 的生命周期

  在传统的Java应用中,bean的生命周期很简单。使用Java 关键字 new 进行bean 实例化,然后该 bean 就可以使用了。一旦该bean 不再被使用,则由 java 自动进行垃圾回收。

  相比之下,Spring 容器中的 bean 的生命周期就显得相对复杂多了。正确理解Spring bean 的生命周期非常重要,因为你或许要利用 Spring 提供的扩展点来自定义bean 的创建过程。图1.5展示了  bean 装载到 spring 应用上下文中的一个典型的生命周期过程。(手机拍摄的。。)

Spring Bean的生命周期,《Spring 实战》书中的官方说法_第2张图片

注意图中所说:bean 在 Spring 容器中从创建到销毁经历了若干阶段,每一阶段都可以针对 Spring 如何管理 bean 进行个性化定制

正如你所见的,在 bean 准备就绪之前, bean 工厂执行了若干启动步骤。我们对图1.5 进行详细描述:(这里是需要背下来的

1. Spring 对 bean 进行实例化;

2. Spring 将值和 bean 的引用注入到bean 对应的属性中;

3. 如果 bean 实现了 BeanNameAware 接口,Spring 将 bean 的 ID 传递给 setBeanName()方法;

4. 如果 bean 实现了  BeanFactoryAware 接口,Spring 将调用 setBeanFactory ()方法,将 BeanFactory 容器实例传入;

5. 如果 bean 实现了 ApplicationContextAware 接口,Spring 将调用 set-ApplicationContext () 方法,将 bean 所在的应用上下文的引用传入进来;

6. 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用他们的 post-Process-Before-Initialization () 方法;

7. 如果 bean 实现了 InitializingBean 接口,Spring 将调用它们的 after-Properties-Set () 方法。类似的,如果 bean 使用 init -method 声明了初始化方法,该方法也会被调用;

8. 如果 bean 实现了 BeanPostProcessor 接口, Spring 将调用它们的 post-Process-After-Initialization () 方法;

9. 此时,bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;

10.  如果 bean 实现了 Disposable-Bean 接口,Spring 将调用它的 destory () 接口方法。同样,如果 bean 使用 destory-method 声明了销毁方法,该方法也会被调用。

 

以上就是书中所说,请牢记,面试中才能从容应对。

你可能感兴趣的:(Spring Bean的生命周期,《Spring 实战》书中的官方说法)