【Spring】Bean生命周期
创始人
2024-02-18 23:27:45
0

一、背景:

自动注入 UserService 对象, UserService 结构如下

在这里插入图片描述

二、创建 Bean 的整体流程:

UserService.class ------> 无参的构造方法 ------> 普通对象(无值) ------> 依赖注入 ------> 初始化前(@PostConstruct) ------> 初始化 Bean (InnitializaingBean) ------> 初始化后 (AOP)------> 代理对象 ------> 放入单例池 Map ------> Bean对象

获取 Bean 对象代码:

通过如下代码,我们可以判断 Bean 对象是否创建成功

在这里插入图片描述

三、各阶段详解

1. 依赖注入阶段:

这个阶段主要是通过反射寻找对象的那个属性上有 @Autowired 注解,伪代码如下:

在这里插入图片描述
2. Bean 如何实现单例 —— 即每次返回的都是同一个 Bean 对象

通过创建单例池实现 ,具体方式为:使用一个 Map 存储,这个 Map 的键为 Bean 对象的名字 (UserService),Map 的值为 Bean 第一次创建的 Bean对象 (new UserService()),每次获取 Bean 对象 都去这个单例池查找就可以保证每次返回的都是同一个 Bean 对象

3. 如何使得我们的 Bean 对象创建好了就带有我们需要的值,而不是创建完了再去赋值

  • 方法一: 在初始化前处理
    对每个对象,自动注入时为赋值方法加上 @PostConstruct 注解,这样的方法在自动注入时就会被执行,我们的赋值方法也可以加在这里

在这里插入图片描述

实现这一操作的伪代码:也是通过反射,扫描各个方法上的注解

在这里插入图片描述

  • 方法二: 在初始化时执行
    实现 InitializingBean 接口,重写 afterPropertiesSet 方法,将赋值操作放在这里方法里,这个方法会在对象初始化时执行。

在这里插入图片描述

相关内容

热门资讯

“新18条”落地!支持前海深化... 2022年9月,海关总署出台《海关总署支持前海深港现代服务业合作区全面深化改革开放若干措施》(俗称“...
原创 比... 最近金融圈炸了个大新闻:俄罗斯央行把欧洲清算银行告上法庭,一开口就要18.2万亿卢布赔偿,折合美元差...
爱奇艺少儿将推出AI内容专项扶... IT之家 12 月 19 日消息,爱奇艺少儿于 12 月 18 日在北京举办 2025 年内容伙伴私...
金融调解进县域 一站式解纷护民... “不用跑法院、不用耗时长,3天就敲定了还款方案,还拿到了司法确认文书,这下我们银行和客户都踏实了!”...
深桑达A(000032)披露累... 截至2025年12月19日收盘,深桑达A(000032)报收于18.52元,较前一交易日上涨0.27...
点赞!莞城法援这样为“夕阳红”... 尊老敬老是中华民族的传统美德 如何切实保障老年人的合法权益? 从专业化法律援助,到常态化的为老法律服...
原创 鞠... 一觉醒来,鞠婧祎可能会成为法制咖,被指控严重经济犯罪? 去年六月,鞠婧祎宣布和丝芭解约,但丝芭不仅...
五台山景区组织开展宗教教职人员... 马晓琴 王政钦 五台山管委会 12月18日至19日,五台山景区组织开展宗教教职人员“学法规、守戒律...
海正生材(688203)披露诉... 截至2025年12月19日收盘,海正生材(688203)报收于12.45元,较前一交易日上涨0.89...
陕国投A:增发价格将按法规要求... 有投资者在互动平台向陕国投A提问:“请问贵公司2024年经审计的归属于母公司普通股股东的每股净资产(...