侧边栏壁纸
博主头像
一定会去到彩虹海的麦当

说什么呢?约定好的事就一定要做到啊!

  • 累计撰写 63 篇文章
  • 累计创建 16 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

Spring 框架中 bean 的生命周期

一定会去到彩虹海的麦当
2022-06-22 / 0 评论 / 0 点赞 / 38 阅读 / 1,024 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-07-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
  1. 前期准备
    ● Bean 容器找到配置文件中 Spring Bean 的定义。
  2. 创建Bean的实例,进行初始化,注入属性
    ● Bean 容器利用 java反射API 创建一个 Bean 的实例。
  3. 属性填充
    ● 如果涉及到一些属性值 利用 set()方法设置一些属性值。
    ● 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName()方法,传入 Bean 的名字。
    ● 如果 Bean 实现了 BeanClassLoaderAware 接口,调用 setBeanClassLoader()方法,传入 ClassLoader对象的实例。
    ● 如果 Bean 实现了 BeanFactoryAware 接口,调用 setBeanFactory()方法,传入 BeanFactory对象的实例。
    ● 与上面的类似,如果实现了其他 *.Aware接口,就调用相应的方法。
  4. 初始化
    初始化前:
    ● 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessBeforeInitialization() 方法
    这里的BeanPostProcessor 针对所有Spring上下文中所有的bean,里面有postProcessBeforeInitialization和postProcessAfterInitialization。 postProcessBeforeInitialization方法在bean初始化之前执行, postProcessAfterInitialization方法在bean初始化之后执行。

初始化:
● 如果 Bean 实现了InitializingBean接口,执行afterPropertiesSet()方法。
afterPropertiesSet()可以针对某个具体的bean进行配置
● 如果 Bean 在配置文件中的定义包含 init-method 属性,执行指定的方法。
初始化后:
● 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessAfterInitialization() 方法

此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;

  1. 销毁Bean
    ● 当要销毁 Bean 的时候,如果 Bean 实现了 DisposableBean 接口,执行 destroy() 方法。
    ● 当要销毁 Bean 的时候,如果 Bean 在配置文件中的定义包含 destroy-method 属性,执行指定的方法。

在这里插入图片描述

0

评论区