02.Spring Framework 之 Bean 生命周期回调

Spring Bean生命周期:从启动初始化到优雅销毁的全流程解析 Spring Bean生命周期是IoC容器管理对象创建、依赖注入、初始化与销毁的核心机制。其本质是围绕Bean实例化(Instantiation)、属性填充(Populate Properties)、Aware回调、BeanPostProcessor处理、初始化方法(@PostConstruct/afterPropertiesSet)、销毁方法(@PreDestroy/destroy)等阶段构成的严格时序链路。该机制保障了依赖注入的可靠性、循环依赖的可解性及资源释放的确定性,直接支撑数据库建表、配置热更新、 阅读详情

1. Bean 的生命周期回调

Spring Bean 生命周期回调

单实例 bean 对象:在容器启动的时候创建对象,在容器关闭的时候销毁对象

多实例 bean 对象:在每次获取的时候创建对象,容器不会调用销毁方法

2. 初始化和销毁方法

代码已经上传至 https://github.com/masteryourself-tutorial/tutorial-spring ,详见 tutorial-spring-framework/tutorial-spring-framework-lifecycle 工程

2.1 @Bean 实现
1. Student
public class Student {

	public Student() {
		System.out.println("student constructor");
	}

	public void initMethod() {
		System.out.println("student initMethod");
	}

	public void destroyMethod() {
		System.out.println("student destroyMethod");
	}

}
2. SpringConfig
@Configuration
@Import(ExtBeanPostProcessor.class)
public class SpringConfig {

	@Bean(initMethod = "initMethod", destroyMethod = "destroyMethod")
	public Student student() {
		return new Student();
	}

	@Bean
	public Teacher teacher() {
		return new Teacher();
	}

	@Bean
	public Principal principal() {
		return new Principal();
	}

}
2.2 InitializingBean & DisposableBean 接口
1. Teacher
public class Teacher implements InitializingBean, DisposableBean {

	public Teacher() {
		System.out.println("teacher constructor");
	}

	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println("teacher afterPropertiesSet");
	}

	@Override
	public void destroy() throws Exception {
		System.out.println("teacher destroy");
	}

}
2.3 @PostConstruct & @PreDestroy 注解
1. Principal
public class Principal {

	public Principal() {
		System.out.println("principal constructor");
	}

	@PostConstruct
	public void postConstruct() {
		System.out.println("principal postConstruct");
	}

	@PreDestroy
	public void preDestroy() {
		System.out.println("principal preDestroy");
	}

}
2.4 BeanPostProcessor
1. ExtBeanPostProcessor
public class ExtBeanPostProcessor implements BeanPostProcessor {

	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		if (bean instanceof Student || bean instanceof Teacher || bean instanceof Principal) {
			System.out.println(String.format("%s =================>>>>>>>>>>>>> postProcessBeforeInitialization", beanName));
		}
		return bean;
	}

	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		if (bean instanceof Student || bean instanceof Teacher || bean instanceof Principal) {
			System.out.println(String.format("%s =================>>>>>>>>>>>>> postProcessAfterInitialization", beanName));
		}
		return bean;
	}

}
Spring Bean生命周期:Bean元信息的配置与解析阶段 文章目录BeanDefinitionReader体系元信息配置与解析方式XmlBeanDefinitionReader元信息解析 源码分析AnnotatedBeanDefinitionReader元信息解析 源码分析 趁着有时间 把最近阅读Spring源码的一些理解 给记录下。 虽然Bean的创建可以采用BeanDefinition API 也可以直接采用注解方式,但从学习角度出发这里主要以API形式创建Bean。下面以一段Bean创建的示例来引出讨论的议题。 public class XmlBeanM 阅读详情

相关推荐

保姆级教程:在CentOS 8上用libvirt + QEMU/KVM搭建ARM64虚拟机(含UEFI配置与常见坑点)

本文提供在CentOS 8上使用libvirt + QEMU/KVM搭建ARM64虚拟机的详细教程,涵盖UEFI配置与常见问题解决方案。通过环境准备、特殊配置要点、UEFI固件安装等步骤,帮助用户在x86架构服务器上高效运行ARM64虚拟化环境,特别适合开发测试与跨平台应用场景。

weixin_30292745的博客 130

2.6 Spring Framework 5.x 之 自定义Bean的本质(Bean的生命周期回调)

定制Bean的本质 生命周期回调 初始化回调 destory回调 默认初始化和销毁方法 结合生命周期机制 ApplicationContextAware和BeanNameAware 其他Aware接口 在非Web应用程序中优雅地关闭Spring

极客星云-优快云博客 808

5G NR PDCCH实战解析:从DCI格式到CORESET配置的完整指南

本文深入解析5G NR PDCCH的实战配置,涵盖DCI格式选择、CORESET配置及Search Space优化等关键内容。基于3GPP R16标准,提供现网部署中的典型问题解决方案,如覆盖边缘失步、多用户调度冲突等,帮助提升控制信令传输效率。特别针对5G NR PDCCH的灵活资源分配和自适应编码机制进行详细探讨。

weixin_29231263的博客 498

spring生命周期

applicationContext.xml。只要有bean放入容器中,构造方法就会被调用,后置处理器的方法也会随着被调用。无论实体类是否有init-method,后置处理器的方法都会在构造方法之后执行的 <?xml version="1.0" encoding="UTF-8"?>...

118

FastAdmin框架Token验证实战:从登录到API调用的完整流程

本文详细解析了在FastAdmin框架中实现Token验证的完整流程,从数据表设计、登录接口签发Token,到核心验证中间件的编写与路由配置,并探讨了在业务API中的调用与安全实践。内容涵盖Token生成策略、有效期管理及安全增强措施,为开发者提供了一套可落地的API身份验证解决方案。

nnn11的博客 917

B0505S选型

    使用B0505S-1W已经有一段时间了,一直以来使用的是下面的电路,该电路摘自《CAN总线嵌入式开发——从入门到实战》一书。 参考金升阳的用户手册,手册上写道: 为了确保该模块能够高效可靠的工作,使用时,其输出最小负载不能小于额定负载的10%。若您所需功率确实较小,请在输出端并联一个电阻(电阻消耗功率与实际使用功率之和大于等于10%的额定功率)        由于使用该电源模...

动感小麦兜的博客 1万+

spring 注解开发之生命周期

spring 注解开发之生命周期 bean的生命周期:bean创建---初始化----销毁的过程 bean的生命周期是由容器管理; 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法 构造(对象创建) 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象 自定义初始化...

Mokyskury的博客 371

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1993

Spring知识点提炼

1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring包含并管理应用中对象的生命周期和配置 ...

weixin_34364135的博客 618

从理论到实践:AI设备维护系统的架构实现

第一部分:理论基石——从设备维护的演进讲起,理解AI如何重塑维护模式;第二部分:架构设计——详解六层高可用系统架构,明确各层职责与技术选型;第三部分:核心技术——拆解数据处理、特征工程、模型训练、部署等关键环节的实现细节;第四部分:实践落地——8步流程带你从需求到上线,附代码示例与工具链;第五部分:案例研究——风电齿轮箱预测性维护系统的真实案例,从问题到方案再到效果;第六部分:挑战与展望——探讨当前技术瓶颈与未来趋势(数字孪生、联邦学习等)。准备好了吗?

大数据洞察的博客 1251

【NIPS 2022】时序精选论文07|Non-stationary Transformers: 引入非平稳性信息的平稳化序列预测模型(代码解读附源码)

整体代码框架基本上与传统 Transformer 类似,基本上只有在内嵌的注意力机制模块有区别,因此这里只对关键部分进行讲解,代码整体框架可参考 Transformer。非平稳时序很难预测,尤其对模型泛化性影响很大,试想下推理阶段的数据分布变了,模型很难适应这种变化。,比如很早以前的差分就是一种平稳化操作。序列平稳化能增强数据的可预测性,但这时也会带来一个问题,叫。,通过MLP层进行定义,使得参数可学习,以便于更好的融合到注意力网络中。代码中整体注意力的计算方式与原生Transformer类似,

ViolenceTemper的博客 1493

Spring Bean生命周期讲解和作用

Bean生命周期讲解和作用 一、 Bean运行步骤和概括 创建(实例化-初始化)-使用-销毁,而在Spring中,Bean对象周期当然遵从这一过程,但是Spring提供了许多对外接口,允许开发者对三个过程(实例化、初始化、销毁)的前后做一些操作。 二、bean接口、方法说明 1.Bean自身方法:init-method/destroy-method,通过为配置文件bean定义中添加相应...

鄧旧人博客 650

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2462

Spring Bean 生命周期和回调

1.介绍 了解 Spring 容器管理的 Spring Bean 生命周期,包括对 Spring 容器和 IoC 的理解。 同时了解 Spring bean 生命周期回调处理程序和后处理器。 Spring Framework 提供了几种回调方法来创建 bean 和一些方法来销毁 Spring IoC Container 中的 bean。 Spring Framework 提供了几个标记接口来更改容器中 bean 的行为; 它们包括 InitializingBean 和 DisposableBean。 实现

盲目的拾荒者的博客 1254

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Framework IoC Bean生命周期

Spring是一款主流的 Java EE 开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从 简单性、可测试性的角度而言,任何Java应用都可以从Spring中受益。Spring框架提供自己提供功能 外,还提供整合其他技术和框架的能力。自2004年4月,Spring1.0 版正式发布以来,Spring已经步入到了第6个大版本,即 Spring6,本课程 采用 Spring5.3.24 正式版本。在Spring框架规范中,所有由spring管理的对象都称之为Bean对象。

qq_20770569的博客 1340

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spring Framework中的Bean生命周期

Bean生命周期指的是Bean在容器中创建、初始化、使用和销毁的过程。Spring的IoC容器负责管理Bean的生命周期,确保它们按照预期的方式被创建和销毁。

ChatYU的博客 1053

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[Spring Framework]bean的生命周期以及控制

bean的生命周期就是bean对象从创建到销毁的整体过程。我们在bean的生命周期中可以干一些事情(也就是对他的生命周期进行一些控制),例如创建之后(比如用来初始化需要用到资源),销毁之前(比如用来释放用到的资源)。接下来我们进行尝试:首先项目背景:有一个实现了BookDao接口的是实现类BookDaoImpl: 我们把它放到IOC容器中: 接下来我们就以这个实现类BookDaoImpl为例子:首先我们在实现类BookDaoImpl中编写两个方法,分别对应着初始化方法、销毁方法: 然后我们在Spring的

十八岁讨厌编程的博客 752

【Spring Framework 源码阅读与笔记】Bean 的生命周期管理

Bean 生命周期管理:Spring 通过管理 Bean 从创建到销毁的完整生命周期。拦截机制:允许在 Bean 初始化前后执行自定义逻辑,是 AOP 的基础。初始化方法调用:支持自动识别接口和自定义初始化方法,确保 Bean 正确初始化。销毁方法调用:支持通过和自定义方法进行销毁处理,释放资源。应用场景实现了代理模式,允许在 Bean 初始化前后加入自定义处理(如 AOP 增强)。优势:将增强逻辑与业务逻辑分离,实现无侵入式的 Bean 增强。

鸿蒙初开 1096

Spring IoC容器核心技术:Bean生命周期与依赖注入详解

本文深入解析Spring框架中BeanFactory与ApplicationContext容器的核心差异、Bean的定义、实例化与初始化过程、三种依赖注入方式的实现原理,以及Bean作用域与生命周期回调机制。通过详细的代码示例和架构分析,帮助开发者全面掌握Spring IoC容器的核心技术,构建高效、可维护的企业级应用。 ## BeanFactory与ApplicationContext容器对...

gitblog_07027的博客 1208

Spring FrameWork从入门到NB - 定制Bean

Customizing the Nature of a Bean,最早准备跳过这部分内容,但是觉得这部分内容是Spring Bean生命周期中的一个重要部分,跳过了可能会影响通往NB之路,所以还是要认真学习一下。

weixin_44612246的博客 452

Spring framework(四)SpringBean生命周期

一、执行流程 传统Java应用中,Bean的生命周期很简单,使用关键字new实例化Bean,不需要时,由Java GC回收。 Spring中Bean的生命周期较为复杂:Bean的定义-> Bean的初始化 -> Bean的使用 -> Bean的销毁。 Spring根据Bean的作用域来选择管理方式,对于singleton的Bean,Spring能够精准地知道该Bean何时被创建、何时初始化完成、何时被销毁;对于prototype作用域的Bean,Spring只负责创建,当容器创建Bean实

全栈攻城狮JSON的博客 497

Spring Framework(十四)Spring Framework 获取 Bean 之 一探究竟

GetBeanByClass public <T> T getBean(Class<T> requiredType, Object... args) throws BeansException { // 1. 解析为namedBean NamedBeanHolder<T> namedBean = resolveNamedBean(required...

wuhulala的休息室 785

Spring Framework 源码阅读(四):BeanPostProcessor和Bean的生命周期

Spring Framework 源码阅读(四):BeanPostProcessor和Bean的生命周期 在介绍Aware接口及其实现类的作用这篇博客中,就有说过在bean调用初始化方法的前后会调用BeanPostProcessor中的方法,以便对bean实现定制化。 首先了解一下bean的生命周期,标准的bean生命周期接口, 初始化方法及其标准顺序(在BeanFactory接口中有描述): BeanNameAware的setBeanName方法。 BeanClassLoaderAware的setBea

kaven 703

Spring Bean生命周期:@Component、@Value与@PostConstruct执行顺序详解

在Java企业级开发中,依赖注入和控制反转是Spring框架的核心概念,它们通过管理对象的创建与依赖关系简化了开发。其原理基于Bean的生命周期管理,容器按照特定阶段实例化、注入属性并执行初始化回调。理解这一机制的技术价值在于能够构建更稳定、可维护的应用,避免因组件初始化时机不当导致的运行时错误。典型的应用场景包括微服务配置加载、组件间依赖解析以及启动时资源初始化。本文聚焦于Spring Bean生命周期中的关键环节,深入解析@Component、@Value和@PostConstruct等常用注解的执行顺

weixin_33743661的博客 352

1.spring框架-----spring framework bean基础配置 bean生命周期

Spring的IOC容器是运行在JVM中 运行main方法后,JVM启动,Spring加载配置文件生成IOC容器,从容器获取bean对象,然后调方 法执行 main方法执行完后,JVM退出,这个时候IOC容器中的bean还没有来得及销毁就已经结束了 所以没有调用对应的destroy方法。使用IOC容器管理Bean,在IOC容器中把有依赖关系的都进行绑定,在使用对象时就可以之间从IOC容器中获取,并且所有的bean已经绑定好依赖关系,降低了耦合性,修改代码的时候不需要全部更改。

qq_46235384的博客 958

kgateway 安全自评估深度解读:CNCF 认证视角下的安全能力与最佳实践

> **导读**:本文以 kgateway 项目官方发布的《CNCF TAG Security 自评估》文档([devel/security/self-assessment.md](https://link.gitcode.com/i/edccf5f3ef41f4ce0fe97d7521384332))为主体,结合仓库源码,系统拆解 kgateway 的安全架构、认证授权能力、TLS/加密机制、流

gitblog_01168的博客 961
上一篇: 03.Spring Framework 之组件赋值
下一篇: 01.Spring Framework 之组件注册
masteryourself
博客等级 码龄9年 13粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值