Spring7指南(三)之Bean的生命周期

Spring 中 Bean 的生命周期 Spring 本质是一个Bean 对象的工厂,负责 Bean 的创建、管理、销毁等全流程。Bean 对象从创建开始,到最终被容器销毁的整个过程。什么时候创建 Bean 对象?Bean 创建 / 销毁的前后会调用哪些方法?如何在特定节点插入自定义逻辑?java运行// 1. 实例化Bean:无参构造方法System.out.println("1. 实例化Bean");// 2. Bean属性赋值:Set方法System.out.println("2. Bean属性赋值"); 阅读详情

项目工程完整地址:https://github.com/YiyiCoding/Spring7Guides

Bean的单例说明

  • 多例Bean( @Scope(“prototype”) )每次都由IOC容器New一个新对象,此处之外跟容器没有太多的联系性

  • 单例才具有生命周期的概念

  • 单例有懒加载的概念:需要时才由IOC容器创建Bean

    只要在类上面或@Bean 上注解 @Lazy 即可

Bean的生命周期

  1. 实例化(Instantiation)→
  2. 属性填充(Populate)→
  3. 前置初始化(BeanPostProcessor.postProcessBeforeInitialization)→
  4. 初始化(Initialization)→
  5. 后置初始化(BeanPostProcessor.postProcessAfterInitialization)→
  6. 就绪(Ready):【在容器中可用】 →
  7. 销毁前处理(DestructionAwareBeanPostProcessor)→
  8. 销毁(Destruction)

【今天Spring7包含的知识点】:

  • @Lazy

  • Bean的生命周期

  • 构造函数注入

    public UserService2(OrderService orderService) {
       this.orderService = orderService;
    }
    
  • 需适配 Jakarta EE 9+

    implementation("jakarta.annotation:jakarta.annotation-api:3.0.0")
    
  • @PostConstruct

  • @PreDestroy

  • InitializingBean

  • DisposableBean

代码开始

  • 新增依赖,Spring7 要求 Jakarta EE 9+
implementation("jakarta.annotation:jakarta.annotation-api:3.0.0")
  • UserService2,采用构造函数注入
@Service
public class UserService2 {
    private final OrderService orderService;

    public UserService2(OrderService orderService) {
        this.orderService = orderService;
    }
    public void test(){
        System.out.println(orderService.demo());
    }
}

Bean的生命周期代码 LifecycleBean:

package com.yiyi.coding.spring.ioc.bean;

import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component
public class LifecycleBean implements InitializingBean, DisposableBean {

    // 步骤1:实例化(无代码,容器自动执行)
    public LifecycleBean() {
        System.out.println("【1. 实例化】创建Bean实例");
    }

    // 步骤2:属性填充(模拟注入,实际可通过配置注入)
    private String name;
    public void setName(String name) {
        this.name = name;
        System.out.println("【2. 属性填充】设置属性name=" + name);
    }

    // 步骤3:BeanPostProcessor前置处理(需自定义实现)
    // 步骤4:初始化
    @PostConstruct
    public void postConstruct() {
        System.out.println("【4.1 初始化】@PostConstruct");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("【4.2 初始化】InitializingBean#afterPropertiesSet");
    }

    public void initMethod() {
        System.out.println("【4.3 初始化】自定义init-method");
    }

    // 步骤5:BeanPostProcessor后置处理(需自定义实现)
    // 步骤6:就绪(可用)
    public void doBusiness() {
        System.out.println("【6. 就绪】Bean执行业务逻辑");
    }

    // 步骤7:销毁前处理(需自定义DestructionAwareBeanPostProcessor)
    // 步骤8:销毁
    @PreDestroy
    public void preDestroy() {
        System.out.println("【8.1 销毁】@PreDestroy");
    }

    @Override
    public void destroy() {
        System.out.println("【8.2 销毁】DisposableBean#destroy");
    }

    public void destroyMethod() {
        System.out.println("【8.3 销毁】自定义destroy-method");
    }

    public String getName() {
        return name;
    }
}

运行 main函数的测试情况:LifecycleBean 中的某些方法未完全执行,有些需进行配置,如 initMethod()等,本次略过。

package com.yiyi.coding.spring.ioc;// 测试类
import com.yiyi.coding.spring.ioc.bean.LifecycleBean;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan("com.yiyi.coding.spring.ioc")
public class LifecycleTest {
    static void main() {
        // 启动容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(LifecycleTest.class);
        LifecycleBean bean = context.getBean(LifecycleBean.class);
        bean.setName("test"); // 手动触发属性填充(模拟容器注入)
        bean.doBusiness();
        // 关闭容器(触发销毁)
        context.close();
    }
}

以下生命周期的钩子已经足够使用。

【1. 实例化】创建Bean实例
【4.1 初始化】@PostConstruct
【4.2 初始化】InitializingBean#afterPropertiesSet
【2. 属性填充】设置属性name=test
【6. 就绪】Bean执行业务逻辑
【8.1 销毁】@PreDestroy
【8.2 销毁】DisposableBean#destroys
基于Codex平台与AI Agent技能开发,实现抖音爆款视频分析与脚本自动生成 大家好,我是专注于AI应用开发的技术博主。最近在探索如何利用AI工具自动化内容创作时,我发现了一个非常有趣的组合:通过Codex平台创建自定义的Skill(技能),来批量分析抖音平台的爆款视频,并基于分析结果自动生成新的带货视频脚本。这听起来像是内容团队的“黑科技”,但实现起来其实有清晰的路径可循。本文将为你完整拆解这个实战项目,从环境搭建、Skill编写、数据抓取到视频脚本生成,手把手教你打造自己的“AI内容助理”。无论你是想了解AI Agent的开发,还是对短视频自动化创作感兴趣,都能从本文中获得可直接 阅读详情

相关推荐

Android Audio - 支持多应用同时录音_Android8.1修改方法

支持多应用同时录音_Android8.1修改方法 源码路径: sdk\frameworks\av\services\audiopolicy\managerdefault\AudioPolicyManager.cpp 需要修改两个位置: audio_io_handle_t AudioPolicyManager::getInputForDevice() 在mpClientInterface-&gt...

iFinelio Tower 的博客 5758

【Spring】Spring的Bean的生命周期

在Java中,Bean是一个重要的概念,它代表了应用程序中的一个对象。在开发中,我们经常使用Bean来管理对象的生命周期。本文将介绍Bean的生命周期,并详细讲解如何在Spring框架中管理Bean的生命周期。Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。Spring为每个Bean定义了若干个回调方法,使得开发人员可以在某个特定的时间点对Bean进行特定的操作。

qq_46096136的博客 1万+

从零开始VCS+Verdi 安装过程

从零开始VCS+Verdi 安装及破解过程 主要参考:VCS+Verdi 安装及破解过程(CentOS7)-----FPGA开发 1. 安装文件结构 –vcs-mx_vL-2016.06 –verdi_vL-2016.06-1 –scl_v11.9 #此程序统一管理license等破解文件 –SynopsysInstaller.rar #此程序用于安装以上3个程序 –sc...

Ztrans的博客 2万+

Spring 中Bean 的生命周期

Spring 中Bean 的生命周期 文章目录Spring 中Bean 的生命周期前言一、Bean 的完整生命周期二、Bean 的生命周期验证 前言 ​ 这其实是一道面试题,是我在面试百度的时候被问到的,当时没有答出来(因为自己真的很菜),后来在网上寻找答案,看到也是一头雾水,直到看到了《Spring in action》这本书,书上有对Bean声明周期的大致解释,但是没有代码分析,所以就自己上...

程序员cxuan的个人主页 7680

上海市大数据中心笔试模拟试卷

为帮助考生熟悉上海市大数据中心笔试的题型、考点及答题逻辑,以下整理了一份的模拟试卷,涵盖大数据专业知识、行政职业能力测试(行测)、公共基础知识(含上海本地政策)三大核心模块,并附详细答案解析。

一叶之秋的博客 1815

大模型——CoPaw:阿里云通义推出的个人智能体工作台,让 AI 助理真正落地

阿里云通义实验室于2026年2月发布CoPaw个人智能助理,采用"本地+云端"双部署模式,支持多平台接入和技能扩展。该产品基于AgentScope多智能体生态构建,具备极简部署、长期记忆系统和灵活的技能插件体系三大核心特性。用户可通过简单命令快速安装,并通过记忆文件系统实现个性化交互体验。CoPaw还支持钉钉、飞书等主流平台接入,并开源了模块化架构,允许本地模型接入。技术架构采用多频道对话网关与可插拔Skills系统,为用户提供真正的AI助理服务体验。

2132

Spring bean生命周期详解

Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。 Spring bean生命周期 四个阶段 Bean的实例化阶段 Bean的设置属性阶段 Bean的 初始化阶段 Bean的销毁阶段 Spring bean生命周期13个环节 阶段1:Bean元信息配置阶段 阶段2:Bean元信息解析阶段 阶段3:将Bean注册到容器中 阶段4:BeanDefinition合并阶段 阶段5:Bean Class加载阶段 阶段6:Bean实例化阶

weixin_44145478的博客 1万+

电容放电测试解析

电子设备断电后滤波电容残留电荷存在触电风险,需符合IEC等安全标准对放电时间的要求。放电测试需测量电容电压下降至安全值的时间,设计可采用主动放电电路或被动放电电阻。常见问题包括电阻选择不当或电路设计缺陷,建议预留放电时间裕度并采用组合放电方案。合规的放电设计是确保产品安全性和可靠性的关键环节。

硬核科技 800

Spring Bean 的生命周期

目录 一、BeanFactory实例化Bean相关接口 二、BeanFactory的bean生命周期相关代码 三、关于BeanFactory的Bean生命周期接口的总结 四、ApplicationContext的Bean生命周期 五、ApplicationContext的Bean生命周期代码演示 六、总结 Spring的生命周期是指实例化Bean时所经历的一系列阶段,即通过getBe...

实践是最好的方法 3万+

FPGA/IC 秋招笔试/面试题总结

文章目录一、FPGA内部资源1. 什么是FPGA2.FPGA内部资源二、同步时钟、同步/异步电路1.同步时钟2.同步/异步电路三、同步复位/异步复位1.同步复位2. 异步复位3. 异步复位同步释放四、同步FIFO/异步FIFO1.同步FIFO2.异步FIFO五、FIFO最小深度计算1.FIFO最小深度2.示例分析六、逻辑电平1.TTL电平标准2.LVTTL电平标准3.CMOS电平标准4.LVCOMS电平标准5.RS2326.RS4857.ECL、PECL、LVPECL8.LVDS9.CML10.GTL11

Crazzy_M的博客 4万+

RT-DETR改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU等)

本文记录的是改进RT-DETR的损失函数,将其替换成。现有研究通过利用边界框之间的几何关系来提高回归性能,但忽略了困难样本和简单样本分布对边界框回归的影响。不同检测任务中困难样本和简单样本的分布不同,对于简单样本占主导的检测任务,关注简单样本的边界框回归有助于提高检测性能;对于困难样本比例较高的检测任务,需要关注困难样本的边界框回归。,提高检测器在不同检测任务中的性能。实现的。

Limiiiing的博客 1922

Spring Bean的生命周期

Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。什么时候创建Bean对象?创建Bean对象的前后会调用什么方法?Bean对象什么时候销毁?Bean对象的销毁前后调用什么方法?其实生命周期的本质是:在哪个时间节点上调用了哪个类的哪个方法。我们需要充分的了解在这个生命线上,都有哪些特殊的时间节点。只有我们知道了特殊的时间节点都在哪,到时我们才可以确定代码写到哪。

qq_52897007的博客 3701

clock min pulse width检查

高电平脉宽 = clock fall edge到达FF/CK的时间 - clock rise edge到达FF/CK的时间;低电平脉宽 = 下一T clock rise edge到达FF/CK的时间 - clock fall edge到达FF/CK的时间。而required pulse width是根据FF/CK处的transition,根据查找表计算得到的。为什么clock transition越大,会导致required pulse width越大呢?5、 降低clock上的串扰。

芯冰乐 577

Spring Bean生命周期

Spring框架的核心能力之一是Bean的生命周期管理。通过容器对Bean的创建、初始化、使用到销毁的全生命周期进行管控,可以专注于业务逻辑,而无需手动处理对象的创建与资源释放。

weixin_44289947的博客 2715

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

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

Spring——Bean 的生命周期

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

浪漫不死的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

spring中bean的生命周期

一、简介 理解spring中bean的生命周期,对于学习和使用spring很有帮助。本文将从两个角度对spring中bean 的生命周期进行介绍,一是bean定义生成;二是bean在初始化、使用、销毁的生命周期中经历的阶段。二、bean定义生成 bean定义生成主要分为三个步骤,即bean定义的获取、bean定义的注册。1、bean定义的获取 bean的定义来源各种各样,如xml定义、java注解...

panda-star的博客 3万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Spring】Bean 的生命周期

Bean 生命周期

秋玄的博客 1364

spring源码学习 三:Bean的生命周期

这一篇文章我们来看看Bean的生命周期,以及从Bean的生命周期中可以学到的设计模式。

nichilemei的博客 1374

Spring Bean生命周期总结

1、简要说明 1)本文基于spring5.1.7版本,采用ApplicationContext获取bean对象。 2)BeanFactory和ApplicationContext对于bean后置处理器还有所不同,需要注意,ApplicationContext会自动检测在配置文件中实现了BeanPostProcessor接口的所有bean,并把它们注册为后置处理器,然后在容器创建bean的适当时候调......

欢迎来到【战羽】的博客 4770

Spring---Bean的生命周期

在以上的5步中,第3步是初始化Bean,在初始化前和初始化后执行的方法为“Bean后处理器”的before和after方法,通过“Bean后处理器”我们可以在初始化Bean的前后添加需要执行的代码。在“Bean后处理器”before方法之前,会检查Bean是否实现了Aware相关的接口,如果实现了接口则调用这些接口中的方法。:销毁并不是说要立马把 Bean 给销毁掉,而是把 Bean 的销毁方法先记录下来,将来需要销毁 Bean 或者销毁容器的时候,就调用这些方法去释放 Bean 所持有的资源。

Elmer的博客 2760

Bean 的生命周期

Bean 的生命周期

sanzailmn的博客 2513

Spring中bean的生命周期

bean的生命周期 一、生命周期流程图: Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。 若容器注册了以上各种接口,程序那么将会按照以上的流程进行。下面将仔细讲解各接口作用。 二、各种接口方法分类 Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类: 1、Bean自身的方法  :  这个包括了Be...

弹指天下 3342

Spring 中Bean的生命周期

Spring 中Bean的生命周期 是怎样的,五大阶段都做了什么。

trigger的博客 4580

简述 Spring Bean的生命周期

简述 Spring Bean的生命周期

weixin_56311692的博客 3515

Spring Bean生命周期详解

API的方式Xml文件方式properties文件的方式注解的方式spring中提供了一个类PropertiesBeanDefinitionReader,将xml中定义的bean解析为BeanDefinition对象,过程和xml的方式类似。下面通过properties文件的方式实现上面xml方式定义的bean。来个properties文件:beans.propertiescar.name=??car1.name=???user.name=???Java。

sxlishaobin的博客 764
上一篇: AI与工作场景(二)跨不同数据库的联合查询实现
下一篇: 每日科技小前沿(一)内存价格为何暴涨?
Yiyi_Coding
博客等级 码龄1年 2粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值