【spring】bean的生命周期
迪丽瓦拉
2025-05-29 03:38:41
0

目录

      • 一.说明
      • 二.四步
        • 2.1 实例化
        • 2.2 属性赋值
        • 2.3 初始化
        • 2.4 销毁

一.说明

  • 1.bean的生命周期指的是bean从创建到销毁的整个过程
  • 2.spring对bean进行实例化
  • 3. spring将值和bean的引用注入到bean对应的属性中
  • 4.如果bean实现了BeanNameAware接口,spring将bean的ID传递给setBean-Name()方法
  • 5.如果bean实现了BeanFactoryAware接口,spirng将调用setBeanFactory()方法,将BeanFactory容器实例传入
  • 6.如果bean实现了ApplicationContextAware接口,spring将调用setApplicationContext()方法,将bean所在的应用上下文的引用传入
  • 7.如果bean实现了BeanPostProcessor接口,spring将调用其postProcessBeforeInitialization()方法
  • 8.如果bean实现了InitializingBean接口,spring将调用其afterPropertiesSet()方法。如果bean使用init-method声明了初始化方法,则调用初始化方法
  • 7.如果bean实现了BeanPostProcessor接口,spring将调用其postProcessAfterInitialization()方法
  • 8.bean已经准备就绪,可以被程序使用,将一直在应用上下文中,直到应用上下文被销毁
  • 9.如果bean实现了DisposableBean接口,spring将调用其destroy()接口方法。如果bean使用destroy-method声明了销毁方法,则调用销毁方法

二.四步

  • 1.实例化
  • 2. 属性赋值
  • 3.初始化
  • 4.销毁

2.1 实例化

  • 1.通过反射去推断构造函数进行实例化
  • 2.通过实例工厂、静态工厂实例化

2.2 属性赋值

  • 1.解析自动装配(byname、bytype、constructor、none、@autowired)
  • 2. 循环依赖

2.3 初始化

  • 1.调用xxxAware回调方法(BeanNameAware、BeanClassLoaderAware、BeanFactoryAware)
  • 2.调用初始化生命周期回调(三种:@PostConstruct、实现InitiallizingBean接口、@Bean(initMethod = “initMethod”))
  • 3.如果bean实现aop,创建动态代理

2.4 销毁

  • 1.在spring容器关闭的时候进行调用
  • 2.调用销毁生命周期回调(三种:@PreDestroy、实现DisposableBean接口、@Bean(initMethod = “destroyMethod”))

相关内容

热门资讯

LinkedList源码解析 Java源码系列:下方连接 http://t.csdn.cn/Nwzed 文章目录...
软件测试2 web测试 (1)web控件测试 ​ 界面检查、单行文本框、多行文本框、...
JVM调优策略 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。   1.Full GC...
快速过一遍ThreadLoca... Thread属性之ThreadLocalMapThreadLocal是java的用来做线程隔离的一个...
【云原生-Docker】Doc... 前面大概介绍了下 Docker组成 Docker大部分的操作都围绕着它的三大核心概念:...
Android---动态权限申... 目录 权限分类 动态权限核心函数 简易实现案例 完整代码     Google 在 Android ...
镜像制作dockerfile编... 1.基于容器制作镜像 示例1: step(1)创建容器并编写内容 [root@...
tcp服务器设置accpet为... 监听socket必须绑定一个端口,以便其他客户端可以连接到这个端口,并与...
试题 历届真题 天干地支【第十... 一、试题来源:第十一届蓝桥杯——天干地支 资源限制 内存限制:256.0...
为什么需要在差分或者重要信号换... 大家可能如果对画PCB没有经验的话,可能不太理解为什么差分线在换层时需要在差分孔旁边打...
Linux线程同步 写在前面 来说线程最后一个内容,今天将补充线程互斥的缺陷,同时我们将学习最常见的一个设计模式,最后我...
快速安装TensorFlow2... 该教程仅适用于初学者,用CPU版本的TensorFlow,安装更快更简单...
从入门到精通:识别滑块验证码缺... 验证码识别是目前互联网应用中普遍存在的技术之一,它通过验证用户输入的信息是否符合要求来...
UART使用 目录 一、uart 二、终端 Terminal 1、终端的分类 2、终端对应的设备节点 三、串口的应...
ONLYOFFICE Docs... ONLYOFFICE Docs crack   文档编辑器   增加了对添加复杂字段的支持。   添...
数学建模-如何用matlab画... 1 画图基本指令hold on :保持打开的命令关闭图形保持功能hold off:title ( x...
ROC曲线和AUC值 ROC曲线(Receiver Operating Characteristic...
【2023.3.8】数据结构复... 【2023.3.8】数据结构复习笔记 文章目录【2023.3.8】数据结构复习笔记序言一、绪论二、线...
一个完整的渗透学习路线是怎样的... 前言 1/我是如何学习黑客和渗透? 我是如何学习黑客和渗透测试的,在这里...
HJ27 查找兄弟单词 描述 定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:...