springIOC容器bean的生命周期

        对于普通的 Java 对象,当 new 的时候创建对象,然后该对象就能够使用了。一旦该对象不再被使用,则由 Java 自动进行垃圾回收。

        Spring 中的实体类对象是 bean,bean 和普通的 Java 对象没啥大的区别,只不过 Spring 不再自己去 new 对象了,而是由IOC容器去帮助我们实例化对象并且管理它,我们需要哪个对象,去问IOC容器要即可。IOC就是解决对象之间的耦合问题,Spring Bean 的生命周期完全由容器控制。

BeanDefinition和Bean的关系:

  • BeanDefinition是Bean的元数据,它是扫描配置文件加载的关于Bean的信息,封装成为BeanDifinition对象
  • Bean,是IOC容器管理的实例化对象,由BeanDefinition属性创建Bean

Bean的创建过程:

  • 容器扫描<bean>标签封装BeanDefinition对象
  • 通过BeanDefinition的属性信息实例化生成Bean对象        

bean的生命周期:

  • 实例化 Instantiation
  • 属性赋值 Populate
  • 初始化 Initialization
  • 销毁 Destruction

关于Bean的创建流程参考下图:

在这里插入图片描述

bean自身方法的生命周期:

分为四步:

1、实例化

  • 读取spring配置文件相关标签封装生成BeanDefinition对象
  • 通过反射进行bean的实例化(此时的Bean是空对象信息)

2、属性赋值

  • 解析BeanDefinition的属性(beanName、beanType等)并赋值,DI在此处体现
  • 如果Bean对象里的属性需要引用容器内部的对象,那么需要调用aware接口的子类方法进行统一设置
  • 循环依赖

3、初始化

  • 调用XXXAware回调方法
  • 调用初始化生命周期回调
  • 如果bean实现aop创建动态代理

4、销毁

  • 在spring容器关闭的时候进行调用
  • 调用初始化生命周期回调

对应上述文字,下图展示了bean装载到spring应用上下文种的一个典型的生命周期过程

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值