Spring中Bean的生命周期(包含Spring执行流程)
创始人
2024-05-24 23:17:51
0

文章目录

  • 一、Spring(Bean)执行流程
  • 二、Bean生命周期
    • Bean的生命周期演示
  • 总结


一、Spring(Bean)执行流程

  1. 启动容器(启动项目)
  2. 读取配置文件(初始化)
    a) 使用xml注册bean
    b) 配置bean根(扫描)路径
  3. bean存储到Spring中(存操作): 通过类注解进行扫描和装配
  4. beanSpring读取出来(取操作),装配到相应的类

在这里插入图片描述

二、Bean生命周期

所谓的生命周期指的是一个对象从诞生到销毁的整个生命过程,我们把这个过程就叫做一个对象的生命周期。

  1. 实例化(对应JVM中的"加载"),从无到有,将字节码转换成内存中的对象,只是分配了内存 ex: 买了一套毛坯房
  2. 设置属性(属性有可能是外部资源需要调用Spring里面的对象进行注入的,所以需要先将外部资源注入进来,才能进行初始化操作),就是Bean注入和装配 ex: 购买装修材料(引入外部资源)
  3. Bean初始化 ex: 房子装修
    • 各种通知: 实现了各种Aware通知的方法,BeanNameAwareBeanFactoryAwareApplicationContextAware 的接口方法 ex:打电话给各个装修的师傅来施工(水工、电工、瓦工)
    • 执行BeanPostProcessor初始化前置方法 ex: 师傅到达现场,先勘察环境,指定装修方案(前置工作)
    • 执行@PostConstruct 初始化方法,依赖注入操作之后被执行,使用这个注解就是执行当前类的初始化方法 ex: 两类师傅进行装修,技术好的,技术一般
    • 执行自己指定的 init-method 方法(如果有指定的话),跟上面一条一样,都是执行初始化方法,init-method 方法是xml时代的方法
    • 执行BeanPostProcess初始化后置方法 ex: 装修之后的清理工作
  4. 使用Bean ex : 入住房子
  5. 销毁Bean ex: 卖掉房子

Bean的生命周期演示

在这里插入图片描述

@Component
public class BeanLifeComponent implements BeanNameAware {@Overridepublic void setBeanName(String s) {System.out.println("执行通知");}@PostConstructpublic void postConstruct() {System.out.println("执行了PostConstruct初始化方法");}public void init() {System.out.println("执行了 init-method 初始化方法");}@PreDestroypublic void preDestory() {System.out.println("执行了PreDestroy销毁方法");}}

执行Demo:

public class Demo3 {public static void main(String[] args) {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");BeanLifeComponent beanLifeComponent = applicationContext.getBean("beanLifeComponent",BeanLifeComponent.class);System.out.println("使用Bean");//销毁BeanapplicationContext.destroy();}
}

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

你可以叫我哒哒呀
本篇到此结束
“莫愁千里路,自有到来风。”
我们顶峰相见!

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...