Spring Bean的生命周期(详细)
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的生命周期(详细)相关推荐
- Spring Bean的生命周期(非常详细)
Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...
- 字节跳动面试题:“请你描述下 Spring Bean 的生命周期?”
1. 引言 "请你描述下 Spring Bean 的生命周期?",这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点. 我之前在准备面试时,去网上搜过 ...
- 再聊Spring Bean的生命周期
Spring Bean的生命周期是Spring面试热点问题.这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Sp ...
- 【Spring Bean的生命周期】
Spring Bean的生命周期(非常详细) - Chandler Qian - 博客园
- 简述 Spring Bean的生命周期
"请你描述下 Spring Bean 的生命周期?",这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点. 其实要记忆该过程,还是需要我们先去理解,本 ...
- Spring Bean的生命周期(二)
上一篇文章大致说明了Spring Bean的生命周期,本章详细说明各个阶段调用的接口方法. 1.1 - 3.2 对应 实例化 Instantiation 4.1 - 4.2 对应 属性赋值 Popul ...
- Java Spring Bean的生命周期 三级缓存
Java Spring Bean的生命周期 三级缓存 SpringBean的生命周期:是从 Bean 实例化之后(即通过反射创建出对象之后),到Bean成为一个完整对象,最终存储到单例池中,这个过程被 ...
- Spring bean 实现生命周期的三种解决方案
Spring bean 实现生命周期的三种解决方案 参考文章: (1)Spring bean 实现生命周期的三种解决方案 (2)https://www.cnblogs.com/javawebsoa/a ...
- 带你读懂Spring Bean 的生命周期,嘿,就是玩儿~
带你读懂Spring Bean 的生命周期,嘿,就是玩儿~ 一.前言 今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象.因为 Spring Bean 的 ...
最新文章
- 《压缩感知理论及其研究进展》读书笔记
- idea加入springboot插件_带你搭一个SpringBoot+SpringData JPA的环境
- 【算法漫画】什么是红黑树?(下篇)
- pinpoint全链路监控系统安装配置
- OpenCV —数据持久化: FileStorage类的数据存取操作与示例
- C#9.0 终于来了,带你一起解读 nint 和 Pattern matching 两大新特性玩法
- 1.3 编程基础之算术表达式与顺序执行 08 温度表达转化
- Linux Socket C语言网络编程:TCP Socket
- 客户购买产品的本质是什么,如何快速寻找到客户的需求,提高转化率?
- 【数字图像处理5.3】SLIC算法 超像素分割(无监督聚类方式)python
- 联想笔记本电脑insert键占用,当鼠标变成小方块时,如何解决
- JS监听手机物理返回键(及IOS微信端的bug)
- 数据可视化笔记 Task3 - Matplotlib布局
- 图像匹配—NCC算法,即归一化互相关匹配
- The requested resource is not available.
- 数据可视化之数据的图表呈现
- PAP认证与CHAP认证的区别
- C语言讲义——错误处理
- 解决unrecognized relocation (0x2a) in section `.text`
- xcode写在_迷失在Xcode领域
热门文章
- 干货:如何进行用户流失分析与预警?
- 中国34城最全剖析:深圳、天津的短板与不足,何时才能补?
- 微波炉定时c语言程序,微波炉控制系统c语言编程.doc
- Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
- 汇编语言学习工具Dosbox的安装与配置(一)
- python paramiko模块
- 6 redhat 查看rtc时间_Linux EasyStack-Redhat安装Docker
- pt100 c 语言,PT100计算公式 C程序.doc
- java创建阻塞_如何从HttpsURLConnection创建Java非阻塞InputStream?
- 卷积神经网络CNNs 为什么要用relu作为激活函数?