SpringBean的生命周期

SpringBean的生命周期总体分为四个阶段:

实例化阶段主要是创建对象,这里我们看到,对象的创建权交由Spring管理了,不再是我们手动new了,这也是IOC的概念。

 属性填充阶段主要是进行依赖的注入,将当前对象依赖的bean对象,从Spring容器中找出来,然后填充到对应的属性中去。

初始化bean阶段做的事情相对比较复杂,包括回调各种Aware接口、回调各种初始化方法。

销毁bean阶段,主要是容器关闭或停止服务,对bean进行销毁处理。
实列化->属性注入->初始化->销毁

1: 实例化:根据配置文件中Bean的定义,利用java Reflection反射技术创建Bean的实例
2: 注入对象依赖的属性值
3: 处理各种Aware接口:Spring会检测该Bean是否实现了Aware接口,通过Aware类型的接口,可以让Spring框架为当前Bean注入相应的内容
如果Bean实现 BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,注入Bean 的名字;
如果 Bean 实现 BeanClassLoaderAware接口,调用setBeanClassLoader()方法,注入ClassLoader对象的实例;
如果Bean实现 BeanFactoryAware接口,会调用它实现的 setBeanFactory()方法,注入的是Spring 工厂;
如果Bean实现ApplicationContextAware接口,会调用setApplicationContext()方法,注入Spring上下文
4: 执行BeanPostPocessor前置处理;如果想对 be an进行一些自定义的前置处理,那么可以让 Bean实现了BeanPostProcessor接口,将会在该阶段调用lpostProcessbeforeEmitialization(0bject obj,string s)方法。
5: 执行InitializingBean初始化方法: 如果Bean 实现了工nitializingBean接口,执行 afeterPropertiesSet()方法。

6: 执行init-method自定义初始化方法:如果Bean 在 Spring 配置文件中配置了init-method属性,则会自动调用其配置的初始化方法。

7: 执行benPostPosso后置处理:如果这个Beanl实现了BeanPostPocessos接口,将会调用postrocesskfterInitialization(bject obj, String s)方法,由于这个方法是在Bean初始化结束后调用;
8: 执行DspoableBen销畏Bean:当Bean不再需要时,会经过清理阶段,如果Bean 实现了DisposableBean这个接口,会调用其实现的destroy()方法执行销毁;
9: 执行destroy-method自定义销毁方法:如果这个Bean的Spring配置中配置了destory-method属性,会自动调用其配置的自定义销毁方法
SpringBean生命周期流程图

44cdad5f39a7484aada58fd69e6a25a7.png

96708b8c7aff456dac807a1e2c62a871.png 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值