Spring中bean的生命周期(易懂版)

article/2025/8/24 3:20:23

bean的生命周期

  • 写在前面的话
  • bean的生命周期
    • 代码演示
  • bean的更完整的生命周期
    • 添加后置处理器的代码演示

写在前面的话

关于bean的生命周期有很多的文章,但是大多数都是长篇的理论,说来说去也不是很好理解,再次我就整理了一篇比较好理解的bean的生命周期,全文通过代码的形式形象的看到bean完整的生命周期,希望对你能有帮助!

bean的生命周期

生命周期是指:从对象创建到对象的销毁的过程。

bean的生命周期分为以下五步:
(1)通过构造器创建bean实例(调用无参的构造函数)
(2)为bean的属性设置值和对其它bean引用(调用set方法)
(3)调用bean的初始化方法(初始化方法需要配置)
(4)bean的使用(获取到对象)
(5)容器关闭,调用bean的销毁的方法(销毁方法需要进行配置)

代码演示

创建一个bean包用于演示bean的生命周期。
在bean包里创建一个Orders类演示使用。

Orders类:

package com.Keafmd.spring5.bean;/*** Keafmd** @ClassName: Orders* @Description: 演示bean生命周期* @author: 牛哄哄的柯南* @date: 2021-01-15 16:52*/
public class Orders {private String oname;//无参的构造函数,为了看到调用构造函数的过程我们把这个无参的构造函数写出来public Orders() {System.out.println("第一步:执行无参构造。");}//set方法public void setOname(String oname) {this.oname = oname;System.out.println("第二步:调用set方法,设置属性值。");}//创建一个初始化的执行的方法public void initMethod(){System.out.println("第三步:执行初始化的方法。");}//创建一个销毁的执行的方法public void destoryMethod(){System.out.println("第五步:执行销毁的方法。");}}

我们自己写的初始化方法和销毁方法只有配置后才会被bean识别为初始化化方法和销毁方法,在bean中这样配置:init-method="initMethod" destroy-method="destoryMethod"

完整的bean4.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--进行配置--><bean id="orders" class="com.Keafmd.spring5.bean.Orders" init-method="initMethod" destroy-method="destoryMethod"><property name="oname" value="手机"></property></bean></beans>

写个测试代码展示bean的生命周期。

测试类TestSpring5demo1:

package com.Keafmd.spring5.testdemo;import com.Keafmd.spring5.bean.Orders;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** Keafmd** @ClassName: TestSpring5demo1* @Description: 测试类* @author: 牛哄哄的柯南* @date: 2021-01-15 14:30*/
public class TestSpring5demo1 {//演示生命周期@Testpublic void test4(){ApplicationContext context = new ClassPathXmlApplicationContext("bean4.xml");Orders orders = context.getBean("orders",Orders.class);System.out.println("第四步:获取创建bean实例对象。");//System.out.println(orders);//手动让bean的实例销毁((ClassPathXmlApplicationContext)context).close();}
}

运行结果:

第一步:执行无参构造。
第二步:调用set方法,设置属性值。
第三步:执行初始化的方法。
第四步:获取创建bean实例对象。
第五步:执行销毁的方法。Process finished with exit code 0

这就是bean的生命周期的五个步骤,但是bean还有跟完整的生命周期,就是加上bean的后置处理器的生命周期。总共会有七步,下面进行演示。

bean的更完整的生命周期

加上bean的后置处理器后bean的生命周期就变成了七步,多出来的两步分别是在执行初始化方法前和执行初始化方法后各多出一步。

bean的更完整的生命周期分为以下七步:
(1)通过构造器创建bean实例(调用无参的构造函数)
(2)为bean的属性设置值和对其它bean引用(调用set方法)
(3)把bean实例传递到bean后置处理器的方法
(4)调用bean的初始化方法(初始化方法需要配置)
(5)把bean实例传递到bean后置处理器的方法
(6)bean的使用(获取到对象)
(7)容器关闭,调用bean的销毁的方法(销毁方法需要进行配置)

添加后置处理器的代码演示

在上面代码的基础我们需要添加一个bean的后置处理器并且进行配置。
创建个MyBeanPost类实现BeanPostProcessor接口。

MyBeanPost:

package com.Keafmd.spring5.bean;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.lang.Nullable;/*** Keafmd** @ClassName: MyBeanPost* @Description: bean的后置处理器* @author: 牛哄哄的柯南* @date: 2021-01-15 17:47*/
public class MyBeanPost implements BeanPostProcessor {@Nullablepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("第三步 Before...");return bean;}@Nullablepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("第三步 After...");return bean;}}

配置bean的后置处理器。

bean4.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="orders" class="com.Keafmd.spring5.bean.Orders" init-method="initMethod" destroy-method="destoryMethod"><property name="oname" value="手机"></property></bean><!--为当前所有的bean都加上了--><!--配置后置处理器--><bean id="myBeanPost" class="com.Keafmd.spring5.bean.MyBeanPost"></bean></beans>

同样的测试代码:
测试类TestSpring5demo1:

package com.Keafmd.spring5.testdemo;import com.Keafmd.spring5.bean.Orders;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** Keafmd** @ClassName: TestSpring5demo1* @Description: 测试类* @author: 牛哄哄的柯南* @date: 2021-01-15 14:30*/
public class TestSpring5demo1 {//演示生命周期@Testpublic void test4(){ApplicationContext context = new ClassPathXmlApplicationContext("bean4.xml");Orders orders = context.getBean("orders",Orders.class);System.out.println("第四步:获取创建bean实例对象。");//System.out.println(orders);//手动让bean的实例销毁((ClassPathXmlApplicationContext)context).close();}
}

运行结果:

第一步:执行无参构造。
第二步:调用set方法,设置属性值。
第三步 Before...
第三步:执行初始化的方法。
第三步 After...
第四步:获取创建bean实例对象。
第五步:执行销毁的方法。Process finished with exit code 0

以上就是关于bean生命周期的全部代码展示。

看完如果对你有帮助,感谢点赞支持!
如果你是电脑端的话,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

在这里插入图片描述
加油!

共同努力!

Keafmd


http://chatgpt.dhexx.cn/article/nlgY1Sy1.shtml

相关文章

面试官:讲一下Spring Bean的生命周期?

1. 引言 “请你描述下 Spring Bean 的生命周期&#xff1f;”&#xff0c;这是面试官考察 Spring 的常用问题&#xff0c;可见是 Spring 中很重要的知识点。 其实要记忆该过程&#xff0c;还是需要我们先去理解&#xff0c;本文将从以下两方面去帮助理解 Bean 的生命周期&…

Spring Bean的生命周期(非常详细)

生命周期图 文章目录 前言一、生命周期流程图&#xff1a;二、各种接口方法分类三、演示 前言 Spring作为当前Java最流行、最强大的轻量级框架&#xff0c;受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容…

Spring 中Bean的生命周期

目录 Bean的生命周期 五个阶段 下面是一个bean对象创建到销毁经历过的方法。 图示​ 问答 普通Java类是在哪一步变成beanDefinition的 推荐视频&#xff1a; 阿里专家耗时一年&#xff0c;终于把Spring源码AOP、IOC、Ben生命周期、事物、设计模式以及循环依赖讲全了_哔哩…

Spring之Bean的生命周期详解

通过前面多个接口的介绍了解了Bean对象生命周期相关的方法&#xff0c;本文就将这些接口的方法串起来&#xff0c;来了解Bean的完整的生命周期。而介绍Bean的生命周期也是面试过程中经常会碰到的一个问题&#xff0c;如果不注意就跳坑里啦~~ Spring之Bean对象的初始化和销毁方法…

Bean的生命周期及演示

文章目录 一、介绍概念Bean生命周期组成&#xff1a; 二、实例演示 一、介绍 概念 Bean的生命周期是指一个Bean对象从创建到销毁的整个存在过程。 Bean生命周期组成&#xff1a; 1.实例化Bean&#xff08;为Bean分配内存空间&#xff09; 2.属性注入 (Bean注入和装配) 3.Bean…

面试题:Spring Bean的生命周期

最近在复习Spring的面试题&#xff0c;关于Spring Bean的生命周期一直没有很深入的理解&#xff0c;自己结合源码参考了网上的几篇文章&#xff0c;写了一点东西&#xff0c;方便理解。 Spring 启动&#xff0c;查找并加载需要被 Spring 管理的 Bean&#xff0c;进行 Bean 的…

Bean的生命周期和作用域

Bean的生命周期 Bean的执行流程&#xff1a; Bean 执行流程&#xff1a;启动Spring 容器 -> 实例化 Bean&#xff08;分配内存空间&#xff0c;从无到有&#xff09;-> Bean 注册到 Spring 中&#xff08;存操作&#xff09; -> 将 Bean 装配到需要的类中&#xff08;…

关于Spring Bean的生命周期

一、简介 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置&#xff0c;从BeanFactory或ApplicationContext取得的实例为Singleton&#xff0c;也就是预设为每一个Bean的别名只能维持一个实例&#xff0c;而不是每次都产生一个新的对象使用Singleton模式产生单一实…

7、Bean的生命周期

Spring其实就是一个管理Bean对象的工厂。它负责对象的创建&#xff0c;对象的销毁等。 所谓的生命周期就是&#xff1a;对象从创建开始到最终销毁的整个过程。 什么时候创建Bean对象&#xff1f; 创建Bean对象的前后会调用什么方法&#xff1f; Bean对象什么时候销毁&#…

【一篇搞懂】 bean的生命周期详解

概述 Spring中的一个Bean从生到灭要经历很多过程,总体分为Bean定义、实例化、属性赋值(依赖注入)、初始化、生存期、销毁几个阶段: ​​​​​​​​ 下面是一个细化的Bean生命周期图: 过程比较复杂,重点关注Bean的定义、初始化、销毁过程,可以抓住重点: BeanPostPro…

Bean 生命周期详解

Spring Bean 的生命周期&#xff0c;面试时非常容易问&#xff0c;这不&#xff0c;前段时间就有个粉丝去字节面试&#xff0c;因为不会回答这个问题&#xff0c;一面都没有过。 如果只讲基础知识&#xff0c;感觉和网上大多数文章没有区别&#xff0c;但是我又想写得稍微深入…

【Spring】Spring的Bean的生命周期

作者简介&#xff1a;大家好&#xff0c;我是五度鱼&#xff0c;一个普通的Java领域博主&#xff0c;不停输出Java技术博客和干货。座右铭&#xff1a;锲而不舍&#xff0c;金石可镂。个人主页&#xff1a;五度鱼学Java的主页 文章目录 前言1. 什么是Bean的生命周期&#xff1f…

Spring中bean的生命周期(最详细)

Spring Bean的生命周期是Spring面试热点问题。Spring Bean的生命周期指的是从一个普通的Java类变成Bean的过程&#xff0c;深知Spring源码的人都知道这个给面试官讲的话大可讲30分钟以上&#xff0c;如果你不没有学习过Spring的源码&#xff0c;可能就知道Aware接口和调用init方…

Bean的生命周期

目录 一&#xff0c;bean的初始化 &#xff08;1&#xff09;Spring的IOC和AOP&#xff1a; &#xff08;2&#xff09;Spring Bean的生命周期&#xff1a; 二&#xff0c;单例模式与多例模式的区别 区别 《代码演示》 前言 回顾&#xff1a;Servlet的生命 初始化&#x…

bean的生命周期(最全最细讲解)

一、bean生命周期&#xff1a; 其定义为&#xff1a;从对象的创建到销毁的过程。而Spring中的一个Bean从开始到结束经历很多过程&#xff0c;但总体可以分为六个阶段Bean定义、实例化、属性赋值、初始化、生存期、销毁。 二、案例代码演示 1.首先我们来创建一个包&#xff0…

去字节面试,直接让人出门左拐:Bean 生命周期都不知道!

Spring Bean 的生命周期&#xff0c;面试时非常容易问&#xff0c;这不&#xff0c;前段时间就有个粉丝去字节面试&#xff0c;因为不会回答这个问题&#xff0c;一面都没有过。 如果只讲基础知识&#xff0c;感觉和网上大多数文章没有区别&#xff0c;但是我又想写得稍微深入…

Spring Bean生命周期,好像人的一生。。

大家好&#xff0c;我是老三&#xff0c;上节我们手撸了一个简单的IOC容器五分钟&#xff0c;手撸一个Spring容器&#xff01;&#xff0c;这节我们来看一看Spring中Bean的生命周期&#xff0c;我发现&#xff0c;和人的一生真的很像。 简单说说IoC和Bean IoC&#xff0c;控制…

Spring中bean的生命周期

Spring中的bean的生命周期主要包含四个阶段&#xff1a;实例化Bean --&#xff1e; Bean属性填充 --&#xff1e; 初始化Bean --&#xff1e;销毁Bean 首先是实例化Bean&#xff0c;当客户向容器请求一个尚未初始化的bean时&#xff0c;或初始化bean的时候需要注入另一个尚末初…

一文读懂 Spring Bean 的生命周期

欢迎大家关注我的微信公众号【老周聊架构】&#xff0c;Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。 一、前言 今天我们来说一说 Spring Bean 的生命周期&#xff0c;小伙伴们应该在面试中经常遇到&#xff0c;这是正常现象。…

ubuntu 换源深层次解析

换源也是一个容易出错的问题&#xff0c;本文以树莓派为例展开&#xff0c;x86也是一样的操作。 那么假设成立的话&#xff0c;就要记住我们是在树莓派&#xff08;arm&#xff09;上安装的ubuntu&#xff0c;不是X86&#xff0c;不是amd。 安装好系统后&#xff0c;我们第一…