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

Spring中Bean的生命周期

  • Spring中Bean的生命周期
    • Bean的五生命周期。
      • 1:实例化Bean
      • 2:给Bean属性赋值
      • 3:初始化Bean
      • 4:使用Bean
      • 5:销毁Bean
    • Bean的七生命周期
    • Bean的十步生命周期

Spring中Bean的生命周期

本文参考b站up主动力节点关于Spring的视频讲解。

注意:Spring容器只会对singleton也就是单例的Bean进行完整的生命周期管理。如果该Bean是prototype作用域的,Spring容器只负责将该Bean初始化完毕。客户端一旦获取到该Bean之后,Spring容器就不会对该Bean的生命周期进行管理了。

Bean的五生命周期。

总体上说,Bean在被创建到最后被销毁会经历下面这五个生命周期。
在这里插入图片描述

1:实例化Bean

调用Bean中的无参构造方法进行Bean的实例化。

2:给Bean属性赋值

调用Bean中的set方法来给Bean中的属性来赋值/

3:初始化Bean

会调用Bean的init()方法,这个init方法需要自己定义。

4:使用Bean

5:销毁Bean

会调用Bean的destory()方法,这个destroy方法同样需要自己定义。

Bean的七生命周期

Bean的七生命周期就是在Bean的第三步也就是初始化Bean的前后都可以添加“Bean后处理器”,可以在初始化Bean初始化前添加Bean后处理器的before方法和在Bean初始化后添加Bean后处理器的after方法。

在这里插入图片描述

下面是具体实现:

编写一个BeanPostProcessor类,重写before和after方法。

public class LogBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("Bean后处理器的before方法执行,即将开始初始化");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("Bean后处理器的after方法执行,已完成初始化");
        return bean;
    }
}

然后在Spring的XML配置文件中配置这个“Bean后处理器”,注意,这个配置会对当前配置文件中所有的bean起作用。

<!--配置Bean后处理器。这个后处理器将作用于当前配置文件中所有的bean。-->
<bean class="com.powernode.spring6.bean.LogBeanPostProcessor"/>

Bean的十步生命周期

仅作了解,具体可以参考相关资料。
在这里插入图片描述

相关文章:

  • React中如何处理高阶组件中的错误
  • WebGPU 命令编码机制解析:GPUCommandEncoder 与 GPURenderPassEncoder 的协作
  • 开源模型应用落地-DeepSeek-R1-Distill-Qwen-7B-LoRA微调-LLaMA-Factory-单机单卡-V100(一)
  • 调用deepseek接口
  • DeepSeek接入大数据能做什么
  • c# —— StringBuilder 类
  • three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系
  • C语言:在主函数中输入十个等长的字符串。用另一函数对它们排序,然后在主函数输出这10个已排好序的字符串。
  • 数据结构-栈、队列、哈希表
  • PyTorch与TensorFlow的对比:哪个框架更适合你的项目?
  • 什么是动态IP?静态IP和动态IP有什么区别?
  • C++中std::condition_variable_any、std::lock_guard 和 std::unique_
  • UE5控件组件显示UMG文本不正常
  • 1、AI量化学习资料 - 用DEEPSEEK玩转PTrade策略开发.zip\AI量化学习资料 - 1、PTrade策略开发提示词(参考模板).md
  • SpringBoot速成(14)文件上传P23-P26
  • 【JAVA实战】JAVA实现Excel模板下载并填充模板下拉选项数据
  • 【C++】36.C++IO流
  • 级联选择器多选动态加载
  • 洛谷P11042 [蓝桥杯 2024 省 Java B] 类斐波那契循环数
  • Linux系统配置阿里云yum源,安装docker
  • 波兰总统选举投票开始,将是对亲欧路线的一次严峻考验
  • 蒲慕明院士:好的科普应以“质疑、讨论公众关切的科学问题”为切入点
  • 大风+暴雨,中央气象台双预警齐发
  • 新任国防部新闻发言人蒋斌正式亮相
  • 30平米的无障碍酒吧里,我们将偏见折叠又摊开
  • 当番茄霸总遇上晋江古言,短剧IP小变局