理解Spring Bean生命周期

一、Spring Bean的概念

Spring bean通常来说是指被Spring容器所管理的java对象;而spring容器就是负责实例化、配置和装配Spring bean;

二、Spring Bean容器

Spring Bean容器可以获取Spring Bean,通过BeanFacroty接口或ApplicationContext接口,两者的区别在于Application继承自BeanFacrory接口,所以Application包含了Beanfactory的所有功能以及拓展了更多功能,而且BeanFactory是懒加载的,ApplicationContext是预加载;

三、实例化SpringBean

Spring提供了三种初始化方式

1.实现InitializingBean接口

public interface InitializingBean{

  void afterPropertiesSet() throws Exception;
}

2.@PostConstruct,通常将注解放在方法上

@PostConstrcut
public void init(){
 System.out.println("init method...");
}

3.init-method

public class MyClass{
     public void init(){
       System.out.println("init method...");
    } 
}
@Configuration
public class AppConfig{
    
     @Bean(initMethod="init")
     public MyClass myclass(){
      return new MyClass(); 
    }

}

或者是这种xml配置

<bean id="myClass" class="com.demo.Myclass" init-method="init" />

这三种初始化方式在框架中组合使用,调用顺序是@PostContruct会被最先调用,其次是InitializingBean.afterPropertiesSet()方法,最后是调用通过xml配置的init-method方法或者设置@Bean注解设置的initMethod方法;

而在实例化Spring Bean之前会有两个回调方法,这个好理解,就好像页面加载一样,有生命周期函数,而这个生命周期函数的实现就是BeanPostProcessor接口,BeanPostProcessor有两个方法,分别是postProcessorBeforeInitialization和postProcessorAfterInitialization;

所以到目前为止,我们知道的Spring Bean的生命周期函数就是如下这种情况;

四、Spring Bean的销毁

既然有创建就会有销毁,否则就是滥用内存,当Spring移除bean时,相关回调方法如下;

我们知道初始化又@PostConsruct、InitializingBean.afeterPropertiesSet()、init-method三种方式,那么对应这三种创建方式便会有三种对应的销毁方式,具体如下;

1.DisposableBean

2.@PreDestory

3.destory-mthod

组合使用调用顺序是@PreDestory、DisposabelBean.destory()、调用XML配置的destory-method方法或者是@Bean注解设置的饿destoryMethod属性的方法

自此我们知道的Spring Bean的生命周期就更加全面了,具体流程如下

Unity最强动作战斗框架?Combat System Framework 深度解析 Combat System Framework 并不是一个简单的角色控制器,而是一套完整的动作游戏战斗开发框架。它借鉴了现代 AAA 游戏常见的架构思想,以 Gameplay Tag 为核心,结合 ScriptableObject 数据驱动设计,将技能、属性、Buff、伤害、武器、动画通知等系统有机整合在一起。同时,配套的可视化动画时间轴、Root Motion 工具和实时预览窗口,大幅优化了动作开发流程。当然,这套框架也有一定的学习门槛。 阅读详情

相关推荐

2、TCGA数据处理(差异分析前处理)

注意:1、是R语言中用于读取文本文件并创建数据框的函数。它可以从文本文件中读取数据并将其存储为数据框的形式,每一列代表一个变量,每一行代表一个观察值。2、括号要成对,不能少了;3、file = 'TCGA-LIHC.htseq_counts.tsv'引号可以是单或双引号,建议单;4、逗号主要中英文,都是用英文模式才没错;5、.tsv文件类型必须要有,不能删除,否则读不进来;6、上面代码将TCGA-LIHC.htseq_counts.tsv文件读入并赋值给count1。

PLW_12的博客 2667

afterPropertiesSet()方法

今天工作时又看到了afterPropertiesSet()这个方法,就简单记录一下。

weixin_45729192的博客 1829

图解链表 —— JAVA中的单链表基本操作

文章目录1. 什么是链表2. 链表的种类3. 创建单链表3.1 创建 Node 类(车厢类)3.2 创建 MySingleList (火车类)4. 单链表的基本操作4.1 增加链表元素4.1.1 在链表头部添加元素4.1.2 在链表任意位置添加元素4.1.3 在链表尾部添加元素4.2 删除链表元素4.2.1 删除第一个节点元素4.2.2 删除任意位置 index 元素4.2.3 删除链表中指定元素的第一个节点4.2.4 删除链表的所有指定元素4.3 查找链表元素4.3.1 判断链表中是否包含元素 data4

AlinaQ05的博客 2501

Spring高手之路5——彻底掌握Bean的生命周期

在这篇文章中,我们将深入研究Spring Framework的核心部分——Spring Bean的生命周期。我们将探讨初始化和销毁方法,了解如何使用@PostConstruct和@PreDestroy注解,以及实现InitializingBean和DisposableBean接口。我们还将详细讨论原型Bean的生命周期,并最后总结Spring中控制Bean生命周期的三种方式。无论你是Spring新手,还是想进一步提高你的Spring技能,这篇文章都能给你提供有价值的 insights。

卓越无关环境,保持空杯心态——靡不有初,鲜克有终 9014

Win11右键菜单显示更多选项设置默认展开方法

在Windows 11操作系统中,用户可能会发现右键点击桌面空白处时,弹出的菜单中仅显示“显示更多选项”,而并非直接展示所有可用的选项。这对于希望快速访问特定功能的用户来说,无疑增加了一些不便。为了优化这一体验,本文将介绍两种简单的方法,帮助用户设置Win11右键菜单,使其默认展开包含的所有选项。通过上述两种方法,用户可以轻松地将Win11右键菜单设置为默认展开所有选项,从而提高工作效率和便捷性。希望这篇文章对你有所帮助!

nntxthml的博客 1万+

墨水屏高效开发:架构、开源库与实战优化指南

嵌入式显示技术中,电子墨水屏以其类纸观感和超低功耗特性,在电子书阅读器、智能办公本及工业仪表等场景中占据独特地位。其工作原理基于微胶囊电泳技术,仅在画面刷新时消耗电能,静态显示时功耗近乎为零,这带来了极致的续航优势。为实现流畅的交互体验,开发者需构建分层渲染架构,通过硬件抽象层统一驱动接口,并引入帧缓冲与差异比较算法智能决策局部刷新区域,从而大幅降低刷新延迟与功耗。开源库如GxEPD2和LVGL为墨水屏适配提供了关键支持,结合波形文件管理与电源优化策略,能有效解决残影与卡顿问题。本文聚焦于eink墨水屏高效

weixin_42545636的博客 410

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

http://www.cnblogs.com/zrtqsk/p/3735273.html Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上Bean...

iteye_7839的博客 5678

基于STM32和K210的自动驾驶小车设计

自动驾驶技术正在迅速发展,成为了汽车行业和智能交通领域的热点之一。随着科技的发展,STM32和K210这两款芯片为自动驾驶小车提供了优秀的硬件支持。本文我们将学习如何使用STM32和K210打造一个简单的自动驾驶小车。提示:以下是本篇文章正文内容,下面案例可供参考通过这篇文章,掌握了如何使用STM32和K210构建一个简单的自动驾驶小车。通过了解基本的电路设计,并编写了STM32和K210的代码。通过这个例子,可以更好地理解如何在嵌入式系统中使用STM32和K210,以及如何实现自动驾驶小车的简单功能。

Kyle_Chan_zMH的博客 2216

Spring——Bean 的生命周期

目录一、Bean 的生命周期二、代码演示三、主要步骤简述 一、Bean 的生命周期   对于普通的 Java 对象,new 的时候会去创建对象,而当它没有任何引用的时候则被垃圾回收机制回收。相较于前者,由Spring IoC 容器托管的对象,它们的生命周期完全由容器控制。Spring 中每个 Bean 的生命周期如下: 对于 ApplicationContext 容器,当容器启动结束后,实例化所有的 Bean。 设置对象属性,即依赖注入,动态将依赖关系注入到对象中。 紧接着,Spring 会检测该对象

浪漫不死的博客 1万+

YOLOv13改进策略【YOLO和Mamba】| 替换骨干 Mamba-YOLOv13-T !!! 最新的发文热点

模块是模型中的一个重要组成部分,其主要作用是在模型的初始阶段对输入图像进行处理,方便后续的特征提取和目标检测。以下是对。

Limiiiing的博客 353

CATIA二次开发核心技术:多实体零件自动化拆解与装配生成深度解析(零件转产品)

CATIA二次开发核心技术:多实体零件自动化拆解与装配生成深度解析

KE17RS的博客 2143

Spring Bean生命周期详解

Spring bean生命周期13个环节 阶段1:Bean元信息配置阶段 阶段2:Bean元信息解析阶段 阶段3:将Bean注册到容器中 阶段4:BeanDefinition合并阶段 阶段5:Bean Class加载阶段 阶段6:Bean实例化阶段(2个小阶段) Bean实例化前阶段 Bean实例化阶段 阶段7:合并后的BeanDefinition处理 阶段8:属性赋值阶段(3个小阶段) B

david_zz2012的专栏 8205

基于STM32的嵌入式平台实现EtherCAT主站

本文将介绍如何在基于STM32的嵌入式平台上构建EtherCAT主站,并提供相应的源代码。使用SOEM库提供的API函数,我们可以实现与EtherCAT从站设备的实时通信和数据交换。在STM32的代码中,使用SOEM库提供的API函数初始化EtherCAT主站。在SOEM库中,我们可以找到EtherCAT主站的实现代码和相关的API函数。使用SOEM库提供的API函数实现EtherCAT主站的功能,包括发送和接收EtherCAT数据帧、处理从站设备的状态等。确保连接正常并且设备能够相互通信。

CodeSageX的博客 2832

谈谈你对Spring Bean生命周期的理解【面试】

Spring Bean生命周期

夏夜凉月 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

关于spring中bean的生命周期的理解

在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用, 则由Java自动进行垃圾回收。 相比之下,Spring容器中的bean的生命周期就显得相对复杂多了。正确理解Spring bean的生命周期非常重要,因为你或许要利用Spring提供的 扩展点来自定义bean的创建过程。下图展示了bean装载到Spring应用上下文中的一个典型的生命周期过程。 如图所示,bean在Spring容器中从创建到销毁经历了 若干阶

见过水星的博客 573

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

spring学习笔记(四)我对spring中bean生命周期的理解

我相信大部分同学对spring中bean的生命周期都不陌生,但是如果要详细的说出每一个步骤,可能能说出来的也不多,我之前也是这样,前几天调了一下spring的源码,看了一点书,突然一下明朗了,理解了spring中bean的生命周期。接下来就跟大家分享下我的心得,有什么不对的也希望大家帮忙指正~ 我们先看一下spring中bean的生命周期: 这是我在网上随便找的一张图,大家估计也看得不少,...

做一个认真的程序员 367

Spring Bean生命周期理解

Spring Bean生命周期理解 Spring Bean生命周期理解 BeanFactory接口是Spring的首要核心接口,要学习Spring必须对此接口深度理解。在阅读此接口源码的时候,刚好发现了接口文档对应的就是SpringBean的生命周期介绍。 以下为原文: Bean factory implementations should support the stan...

曹金桂 1551

Spring Bean——理解Bean的生命周期

生命周期图 在bean准备就绪给我们使用之前,容器默默的执行了很多启动步骤。Spring提供了BeanFactory作为Spring容器,平常开发中我们常用其派生类ApplicationContext。 尽管BeanFactory和ApplicationContext容器的注册方式不大一样(使用BeanFactory要显示的调用其addBeanPostProcessor()方法进行注册)以及加载b...

tinysakura的博客 376

深入理解Spring Bean的生命周期

Bean 定义阶段就如同建筑前的设计图纸绘制,它决定了 Bean 的基本属性和行为特征。在这个阶段,Spring 通过BeanDefinition对象来描述 Bean 的配置信息,这是后续所有操作的基础。​BeanDefinition不仅包含了 Bean 的类信息,还支持设置初始化方法(setInitMethodName)、销毁方法(setDestroyMethodName)和作用域(setScope)等关键配置。

Landcc的博客 1079

深入理解 Spring Bean 生命周期(附源码分析)

Spring Bean 的生命周期是面试中 Spring 系列的一个高频问题,本篇我们将从源码方面来剖析 Spring Bean 的生命周期。

weixin_42118323的博客 1378

深入理解 Spring Bean 生命周期的执行流程

Spring Bean 的生命周期是一个复杂而有序的过程,涵盖了从准备创建到最终销毁的各个阶段。每个阶段都有其特定的任务和扩展点,开发者可以利用这些扩展点来满足不同的业务需求。通过深入理解 Spring Bean 的生命周期,我们可以更好地掌握 Spring 框架的运行机制,编写出更加高效、灵活的代码。希望本文能帮助大家对 Spring Bean 的生命周期有更深入的认识。

lrh35的博客 969

springbean的生命周期_对Spring Bean生命周期的一些补充理解

缘由在之前我解析Spring IoC原理的文章,我顺带提到了Spring中的Bean的生命周期,但是当时我只是粗略地带过,而没有对必要的细节予以阐述。因此,在这篇文章,我会详细地针对Spring中Bean的生命周期再做一次详细的总结。整体阶段Spring中Bean的生命周期主要分为以下几个大阶段:实例化属性赋值初始化使用中销毁下面分阶段详细讲解下实例化实例化是Bean生命周期的第一个阶段,在这一阶...

weixin_39864373的博客 732

Spring Bean 的理解,Bean的生命周期

这段代码是标准的 Spring 配置内容,咱们从上往下来看,首先导入一个叫做resource1.xml 的标准配置文件,然后,导入了第二个标准的配置文件 resource2.xml,接着,定义了一个叫做 userService 的 Bean,对应的类是com.gupaoedu.vip.UserService,并且声明了在 userService 实例化之后要调用 init()方法,在 userService 销毁之后调用 destory()方法。那么,我们该如何去定义 Spring 中的 Bean 呢?

qq_63431773的博客 120

AI如何帮你彻底理解Spring Bean生命周期

生命周期中最难理解的可能就是BeanPostProcessor的介入时机。实现BeanPostProcessor接口在postProcessBeforeInitialization中记录"初始化前"状态在postProcessAfterInitialization中记录"初始化后"状态通过@Order控制多个处理器的执行顺序运行后发现这个处理器会对容器内所有Bean生效,这解释了为什么Spring自身的功能(如@Autowired)也能基于此机制工作。可视化工具能大幅降低理解复杂度。

SilvermistRaven28的博客 826

初步理解:spring bean的生命周期

初步理解:spring bean的生命周期

busizacao的博客 189

实践出真知:理解Spring Bean生命周期

https://blog.youkuaiyun.com/programmer_at/article/details/82533396 Bean的生命周期,尤其是Bean从实例化到可以使用,过程较为复杂,所以建议自己coding一遍来加深理解。 该周期中涵盖了Spring Aware接口,Spring PostProcessor后置处理器等等,首次接触时可能会觉得晦涩难懂,结合应用场景更有助于理解。 文章目录...

yb223731的博客 530

深入理解 Spring Bean 的生命周期

Spring 是当下热门的框架,其根本使命是为了简化企业级的 Java 开发,因此其提供了依赖注入以及面向切面编程这两大核心特性。而在 Spring 框架的使用中 Spring Bean 贯穿始终,那么 Spring Bean 是如何创建的,它的生命周期又是如何?本篇文章正是解答这个问题。

programmerCy的博客 826
上一篇: 强烈建议用枚举实现单例模式
下一篇: EXSI6.7.0安装
番茄鸡蛋挂面
博客等级 码龄9年 14粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值