当前位置: 首页 > news >正文

Bean 生命周期

Bean 生命周期

一、Bean 实例化的基本流程

Spring容器在进行初始化时,会将xml配置的的信息封装成一个BeanDefifinition对象,所有的BeanDefifinition存储到一个名为beanDefifinitionMap的Map集合中去,Spring框架在对该Map进行遍历,使用反射创建Bean实例对象,创建好的Bean对象存储在一个名为singletonObjects的Map集合中,当调用getBean方法时则最终从该Map集合中取出Bean实例对象返回

二、具体步骤

总体分为四个阶段:实例化 =》 属性注入 =》 初始化 =》销毁

1、实例化 Bean

根据配置文件中 Bean 的定义,利用反射技术创建 Bean 的实例

2、注入对象依赖的属性值(或对象)
3、处理各种Aware接口
4、执行 BeanPostProcessor 前置处理

如果想对 Bean 进行一些自定义的前置处理,那么可以让 Bean 实现 BeanPostProcessor 接口

将会在该阶段调用 POSTProcessBeforeInitialization(Object obj,String s)方法

5、执行InitializingBean初始化方法

如果 Bean 实现了 InitializingBean 接口,执行 afeterPropertiesSet() 方法

6、执行init-method自定义初始化方法

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

7、执行BeanPostProcessor后置处理

如果这个 Bean 实现了BeanPostProcessor接口将会调postProcessAfterInitialization(Object obj,String s)方法,由于这个方法是在 Bean初始化结束后调用;

8、执行DisposableBean销毁Bean

当 Bean 不再需要时,会经过清理阶段,如果 Bean实现了 DisposableBean 这个接口,会调用其实现的 destroy()方法执行销毁;

9、执行destroy-method自定义销毁方法

如果这个 Bean 的 Spring 配置中配置了destroy-method 属性,会自动调用其配置的自定义销毁方法

http://www.lryc.cn/news/145524.html

相关文章:

  • JavaScript原型链污染
  • 【Java】设计模式之单例模式与工厂模式
  • web自动化框架:selenium学习使用操作大全(Python版)
  • boringssl EVP_aes_128_ecb实现
  • vxe-table中树形结构
  • Linux命令查看CPU、内存、IO使用情况简单介绍
  • RPC框架的核心是什么
  • 直播、AI赋能,美团披着荆棘前行
  • 提升代码逻辑的感觉——python循环语句
  • 【ARM Coresight 系列文章 20 -- linux perf 与 ARM coresight】
  • 微服务之Nacos
  • jvm 新生代的区域划分
  • 【C++】对于string的补充(成员函数c_str()、大小写转换、字符串和实数之间的相互转换)
  • 华为OD机试真题【羊狼农夫过河】
  • 【线性代数-3Blue1Brown】- 5 三维空间的线性变换
  • Maven入门教程(二):idea/Eclipse使用Maven
  • 【MySQL】MySQL里的用户账户和角色是什么?如何管理?
  • vbs病毒
  • 用Java实现Huffman编码
  • day-04 基于UDP的服务器端/客户端
  • FFmpeg rtp rtp_mpegts的区别
  • 【链表OJ】相交链表 环形链表1
  • DevOps之自动化测试
  • Java 程序打印 OpenCV 的版本
  • ChatGPT⼊门到精通(2):ChatGPT 能为我们做什么
  • 线程和进程的区别是什么?
  • 力扣27.移除元素
  • 指针(个人学习笔记黑马学习)
  • vue 路由动态加载
  • 电脑识别不了固态硬盘怎么办?