Spring创建Bean过程分析

本文深入探讨了Spring容器在启动时如何处理Bean的配置元信息,包括从XML和properties文件加载,BeanDefination的注册以及BeanFactoryPostProcessor的处理。接着,详细介绍了Bean实例化的各个步骤,如对象创建策略、BeanWrapper、属性设置、Aware接口的使用、BeanPostProcessor的前后处理,以及初始化和销毁逻辑。最后,阐述了如何在应用中使用Bean并调用销毁接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器启动阶段:
1.配置元信息(创建对象所需要的必要信息)
-xml文件 properties文件 注解 硬编码
2.BeanDefinationReader加载配置文件,将其转化为内存形式的BeanDefination
XmlBeanDefinationReader - xml
PropertiesBeanDefinitionReader - properties
3.将BeanDefination注册到BeanDefinationRegistry中。
以键值对的形式,(Bean定义的id:BeanDefination)
BeanFactoryPostProcessor可对BeanDefinationRegistry中属性进行替换和修改($占位符)

Bean实例化:
1.对象创建策略 - 采用策略模式。 反射或CGlib字节码生成创建对象
2.BeanWrapper - 对创建出来的Bean进行包装,简化上层业务逻辑
3.设置对象属性
4.先检查Aware相关接口,然后从Spring的对象池中查找相关实例。
(例如对于ApplicationContextAware接口,就去找ApplicationContext实例),
也就是说我们必须要在配置文件中或者使用注解的方式,将相关实例注册容器中,
BeanFactory才可以为我们自动注入。
5.BeanPostProcessor前置处理
要生产的Bean实例放到容器之前,允许对Bean实例进行一定程度的修改,替换等操作。
6.自定义初始化逻辑
在所有的准备工作完成之后,如果我们的Bean还有一定的初始化逻辑,那么Spring将允许
我们通过两种方式配置我们的初始化逻辑:
(1)InitializingBean (2)配置init-method参数
一般通过配置init-method方法比较灵活。
7.BeanPostProcess后置处理 - 可自定义扩展逻辑
8.自定义销毁逻辑
两种方式:(1)实现DisposableBean接口 (2)配置destory-method参数。
这里一个比较典型的应用就是配置dataSource的时候destory-method为数据库连接的close()方法。
9.使用Bean
10.调用回调销毁接口 - 自定义销毁逻辑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值