news 2026/6/9 21:10:41

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring7指南(三)之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的生命周期

  • 构造函数注入

    publicUserService2(OrderServiceorderService){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,采用构造函数注入
@ServicepublicclassUserService2{privatefinalOrderServiceorderService;publicUserService2(OrderServiceorderService){this.orderService=orderService;}publicvoidtest(){System.out.println(orderService.demo());}}

Bean的生命周期代码LifecycleBean

packagecom.yiyi.coding.spring.ioc.bean;importjakarta.annotation.PostConstruct;importjakarta.annotation.PreDestroy;importorg.springframework.beans.factory.DisposableBean;importorg.springframework.beans.factory.InitializingBean;importorg.springframework.stereotype.Component;@ComponentpublicclassLifecycleBeanimplementsInitializingBean,DisposableBean{// 步骤1:实例化(无代码,容器自动执行)publicLifecycleBean(){System.out.println("【1. 实例化】创建Bean实例");}// 步骤2:属性填充(模拟注入,实际可通过配置注入)privateStringname;publicvoidsetName(Stringname){this.name=name;System.out.println("【2. 属性填充】设置属性name="+name);}// 步骤3:BeanPostProcessor前置处理(需自定义实现)// 步骤4:初始化@PostConstructpublicvoidpostConstruct(){System.out.println("【4.1 初始化】@PostConstruct");}@OverridepublicvoidafterPropertiesSet()throwsException{System.out.println("【4.2 初始化】InitializingBean#afterPropertiesSet");}publicvoidinitMethod(){System.out.println("【4.3 初始化】自定义init-method");}// 步骤5:BeanPostProcessor后置处理(需自定义实现)// 步骤6:就绪(可用)publicvoiddoBusiness(){System.out.println("【6. 就绪】Bean执行业务逻辑");}// 步骤7:销毁前处理(需自定义DestructionAwareBeanPostProcessor)// 步骤8:销毁@PreDestroypublicvoidpreDestroy(){System.out.println("【8.1 销毁】@PreDestroy");}@Overridepublicvoiddestroy(){System.out.println("【8.2 销毁】DisposableBean#destroy");}publicvoiddestroyMethod(){System.out.println("【8.3 销毁】自定义destroy-method");}publicStringgetName(){returnname;}}

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

packagecom.yiyi.coding.spring.ioc;// 测试类importcom.yiyi.coding.spring.ioc.bean.LifecycleBean;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;importorg.springframework.context.annotation.ComponentScan;@ComponentScan("com.yiyi.coding.spring.ioc")publicclassLifecycleTest{staticvoidmain(){// 启动容器AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(LifecycleTest.class);LifecycleBeanbean=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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:36:37

【Dify 1.7.0多模态RAG音频处理】:揭秘新一代AI语音理解核心技术

第一章:Dify 1.7.0多模态RAG音频处理的核心突破Dify 1.7.0 版本在多模态检索增强生成(RAG)领域实现了关键性进展,尤其在音频数据的处理能力上展现出显著提升。系统首次支持端到端的音频内容理解与语义检索,使得语音文件…

作者头像 李华
网站建设 2026/6/10 2:01:52

腾讯混元开源四梯度轻量模型:开启端侧AI普惠新时代

腾讯混元开源四梯度轻量模型:开启端侧AI普惠新时代 【免费下载链接】Hunyuan-1.8B-Instruct-GPTQ-Int4 腾讯开源混元大语言模型系列中的高效对话模型,专为多样化部署环境设计。支持混合推理模式与256K超长上下文,在数学、编程、逻辑推理等任务…

作者头像 李华
网站建设 2026/6/10 10:34:28

Wan2.2-T2V-A14B支持绿幕抠像输出吗?后期合成兼容性探讨

Wan2.2-T2V-A14B支持绿幕抠像输出吗?后期合成兼容性探讨 在影视制作与广告创意日益依赖AI生成内容的今天,一个关键问题浮出水面:我们能否直接将AI生成的视频无缝接入专业视觉特效流程?尤其是像阿里巴巴推出的Wan2.2-T2V-A14B这样的…

作者头像 李华
网站建设 2026/6/10 11:54:53

【收藏必看】程序员转行大模型的6个高薪方向及必备技能详解

文章详解程序员转行大模型领域的6个方向:自然语言处理、计算机视觉、算法、部署和产品经理岗位。每个方向均提供推荐理由和技能要求,包括编程能力、数学基础和专业知识。程序员应结合自身优势,针对性学习技能,才能在大模型领域实现…

作者头像 李华
网站建设 2026/6/10 11:06:47

Agentic AI技术革命:提示工程架构师的实战指南

Agentic AI技术革命:提示工程架构师的实战指南 关键词:Agentic AI、提示工程、智能体架构、ReAct框架、工具调用、思维链(CoT)、多轮规划 摘要:当大模型从“回答机器”进化为“行动机器”,Agentic AI(智能体AI)成为AI技术革命的下一个拐点。本文用小助手比喻拆解Agenti…

作者头像 李华
网站建设 2026/6/9 20:39:00

阿里自研架构加持下Wan2.2-T2V-A14B的创新突破有哪些?

阿里自研架构加持下Wan2.2-T2V-A14B的创新突破有哪些? 在影视广告制作仍依赖数周拍摄与后期处理的今天,一条高质量宣传视频的成本动辄数十万元——而如今,只需输入一段文字:“一位穿红色连衣裙的女孩在春天的樱花树下旋转&#xf…

作者头像 李华