首页 >文档 > spring bean的创建过程

spring bean的创建过程

面试鸭返利网(mianshiyafanli.com)是程序员求职必备的面试优惠平台,提供面试鸭会员专属返利25元优惠。我们专注Java、Spring、MySQL等IT技术面试资源,汇集2025最新大厂真题、面试宝典和实战经验。通过本站购买面试鸭会员可享受独家返现,助你高效备战金三银四、金九银十求职季。海量Spring框架、分布式系统、算法题库一网打尽,还有资深面试官解析和模拟面试服务。省钱又省心,快来领取你的面试通关秘籍!

Spring Bean的创建过程

📎 2025年Java面试宝典最新整理: 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g 提取码: 9b3g

作为Java程序员,Spring框架的Bean管理机制是面试必考题。今天咱们就深入聊聊Spring Bean的创建过程,面试被问到时直接按这个思路答,绝对加分!整个过程可以拆解成几个关键阶段:

Spring Bean生命周期流程图

二、 核心阶段解析

1. 实例化 (Instantiation)

  • 触发时机: 当Spring IoC容器需要创建一个Bean时,比如遇到@AutowiredgetBean()请求或容器启动加载单例Bean。
  • 关键动作: 容器通过反射(常用Class.newInstance()或构造器)或指定的工厂方法(如@Bean方法、FactoryBeangetObject()创建Bean的原始对象。此时对象还是个“空壳”,属性没注入,也没初始化。
  • 面试点: 常问构造器注入在此阶段发生(如果依赖其他Bean,那些Bean也会按需创建)。

2. 属性赋值/依赖注入 (Population/Populating Properties)

  • 核心任务: 给刚创建的Bean填充属性值解决依赖
  • 实现方式:
    • 基于Setter: 调用Bean的Setter方法注入值。
    • 基于字段/构造器: 通过反射直接给字段赋值或构造器传参。
    • 自动装配 (@Autowired, @Resource): 容器自动查找匹配的依赖Bean并注入。
  • 涉及机制: 依赖查找、类型转换(如果需要)、解决循环依赖(利用三级缓存)。
  • 面试重点: 循环依赖的原理(三级缓存:singletonFactories, earlySingletonObjects, singletonObjects)、@Autowired@Resource区别。

3. 初始化 (Initialization)

  • 目标: 让Bean达到可用状态。
  • 关键步骤:
    1. Aware接口回调: 如果Bean实现了BeanNameAware, BeanFactoryAware, ApplicationContextAware等接口,容器会回调相应方法,注入上下文信息。
    2. BeanPostProcessor前置处理 (postProcessBeforeInitialization): 容器中所有BeanPostProcessor有机会在初始化方法调用前对Bean进行加工(如生成代理)。
    3. 初始化方法执行:
      • 指定初始化方法: @PostConstruct注解标记的方法。
      • 实现InitializingBean接口: 执行afterPropertiesSet()方法。
      • XML配置的init-method 执行指定的方法名。
    4. BeanPostProcessor后置处理 (postProcessAfterInitialization):初始化方法执行后,BeanPostProcessor再次对Bean进行处理。这是生成AOP代理的关键时机!
  • 面试高频: BeanPostProcessor的作用、执行时机、与AOP的关系;@PostConstructInitializingBeaninit-method的执行顺序。

4. 使用与销毁 (In Use and Destruction)

  • 使用: 初始化完成后,Bean放入单例池 (singletonObjects),可以被应用程序正常获取和使用。
  • 销毁: 当容器关闭时(如ApplicationContext.close()),对单例Bean执行销毁逻辑:
    1. 销毁方法执行:
      • @PreDestroy注解标记的方法。
      • 实现DisposableBean接口: 执行destroy()方法。
      • XML配置的destroy-method 执行指定的方法名。
    2. 资源释放: 在此阶段关闭数据库连接、释放文件句柄等。

Spring容器核心接口关系示意图

三、 总结与关键点回顾

整个Spring Bean的创建过程核心就是:实例化 -> 属性注入 -> 初始化(包含Aware回调、BeanPostProcessor处理、@PostConstruct等) -> 使用 -> 销毁(@PreDestroy等)。理解这个过程,尤其是依赖注入如何解决、初始化回调的顺序、以及BeanPostProcessor的强大干预能力,是应对Spring相关面试题的基石。

大家在准备面试时,除了理解理论,刷题和看高质量题解也很关键。如果需要购买面试鸭会员来获取海量真题和解析,可以通过面试鸭返利网(mianshiyafanli.com)找我下单,立享25元返利优惠,相当于帮你省了一顿饭钱!用好资源,高效备战。

面试鸭返利网优惠入口

返回面试鸭返利网首页

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)

面试鸭返利网客服-面试鸭返利网

面试鸭小程序码

面试鸭小程序码 - 面试鸭返利网

美团大额优惠券,给自己加个鸡腿吧!

美团大额优惠券,给自己加个鸡腿吧!

今日有支付宝大红包赶快领,手慢无

支付宝红包二维码

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码