Bean 生命周期的整个执行过程描述如下。

1)根据配置情况调用 Bean 构造方法或工厂方法实例化 Bean。

2)利用依赖注入完成 Bean 中所有属性值的配置注入。

3)如果 Bean 实现了 BeanNameAware 接口,则 Spring 调用 Bean 的 setBeanName() 方法传入当前 Bean 的 id 值。

4)如果 Bean 实现了 BeanFactoryAware 接口,则 Spring 调用 setBeanFactory() 方法传入当前工厂实例的引用。

5)如果 Bean 实现了 ApplicationContextAware 接口,则 Spring 调用 setApplicationContext() 方法传入当前 ApplicationContext 实例的引用。

6)如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的预初始化方法 postProcessBeforeInitialzation() 对 Bean 进行加工操作,此处非常重要,Spring 的 AOP 就是利用它实现的。

7)如果 Bean 实现了 InitializingBean 接口,则 Spring 将调用 afterPropertiesSet() 方法。

8)如果在配置文件中通过 init-method 属性指定了初始化方法,则调用该初始化方法。

9)如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法 postProcessAfterInitialization()。此时,Bean 已经可以被应用系统使用了。

10)如果在 中指定了该 Bean 的作用范围为 scope=“singleton”,则将该 Bean 放入 Spring IoC 的缓存池中,将触发 Spring 对该 Bean 的生命周期管理;如果在 中指定了该 Bean 的作用范围为 scope=“prototype”,则将该 Bean 交给调用者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。

11)如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。

Spring Bean的生命周期(详细)相关推荐

  1. Spring Bean的生命周期(非常详细)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

  2. 字节跳动面试题:“请你描述下 Spring Bean 的生命周期?”

    1. 引言 "请你描述下 Spring Bean 的生命周期?",这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点. 我之前在准备面试时,去网上搜过 ...

  3. 再聊Spring Bean的生命周期

    Spring Bean的生命周期是Spring面试热点问题.这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Sp ...

  4. 【Spring Bean的生命周期】

    Spring Bean的生命周期(非常详细) - Chandler Qian - 博客园

  5. 简述 Spring Bean的生命周期

    "请你描述下 Spring Bean 的生命周期?",这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点. 其实要记忆该过程,还是需要我们先去理解,本 ...

  6. Spring Bean的生命周期(二)

    上一篇文章大致说明了Spring Bean的生命周期,本章详细说明各个阶段调用的接口方法. 1.1 - 3.2 对应 实例化 Instantiation 4.1 - 4.2 对应 属性赋值 Popul ...

  7. Java Spring Bean的生命周期 三级缓存

    Java Spring Bean的生命周期 三级缓存 SpringBean的生命周期:是从 Bean 实例化之后(即通过反射创建出对象之后),到Bean成为一个完整对象,最终存储到单例池中,这个过程被 ...

  8. Spring bean 实现生命周期的三种解决方案

    Spring bean 实现生命周期的三种解决方案 参考文章: (1)Spring bean 实现生命周期的三种解决方案 (2)https://www.cnblogs.com/javawebsoa/a ...

  9. 带你读懂Spring Bean 的生命周期,嘿,就是玩儿~

    带你读懂Spring Bean 的生命周期,嘿,就是玩儿~ 一.前言 今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象.因为 Spring Bean 的 ...

最新文章

  1. 《压缩感知理论及其研究进展》读书笔记
  2. idea加入springboot插件_带你搭一个SpringBoot+SpringData JPA的环境
  3. 【算法漫画】什么是红黑树?(下篇)
  4. pinpoint全链路监控系统安装配置
  5. OpenCV —数据持久化: FileStorage类的数据存取操作与示例
  6. C#9.0 终于来了,带你一起解读 nint 和 Pattern matching 两大新特性玩法
  7. 1.3 编程基础之算术表达式与顺序执行 08 温度表达转化
  8. Linux Socket C语言网络编程:TCP Socket
  9. 客户购买产品的本质是什么,如何快速寻找到客户的需求,提高转化率?
  10. 【数字图像处理5.3】SLIC算法 超像素分割(无监督聚类方式)python
  11. 联想笔记本电脑insert键占用,当鼠标变成小方块时,如何解决
  12. JS监听手机物理返回键(及IOS微信端的bug)
  13. 数据可视化笔记 Task3 - Matplotlib布局
  14. 图像匹配—NCC算法,即归一化互相关匹配
  15. The requested resource is not available.
  16. 数据可视化之数据的图表呈现
  17. PAP认证与CHAP认证的区别
  18. C语言讲义——错误处理
  19. 解决unrecognized relocation (0x2a) in section `.text`
  20. xcode写在_迷失在Xcode领域

热门文章

  1. 干货:如何进行用户流失分析与预警?
  2. 中国34城最全剖析:深圳、天津的短板与不足,何时才能补?
  3. 微波炉定时c语言程序,微波炉控制系统c语言编程.doc
  4. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
  5. 汇编语言学习工具Dosbox的安装与配置(一)
  6. python paramiko模块
  7. 6 redhat 查看rtc时间_Linux EasyStack-Redhat安装Docker
  8. pt100 c 语言,PT100计算公式 C程序.doc
  9. java创建阻塞_如何从HttpsURLConnection创建Java非阻塞InputStream?
  10. 卷积神经网络CNNs 为什么要用relu作为激活函数?