bean生命周期详解
作为一名Java程序员,在面试中被问到bean生命周期简直是家常便饭。今天我就用最接地气的方式,给大家拆解Spring框架中这个高频面试点,帮你轻松应对!
📚 2025年Java面试宝典:
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g
(建议保存,涵盖Spring核心+源码+分布式高频题)
🧱 二、到底什么是Bean生命周期?
简单说,bean生命周期就是一个Bean在Spring容器里从“诞生”到“销毁”的全过程。Spring就像个精密工厂,严格管控着每个Bean的每个阶段。理解bean生命周期,你才能真正搞懂Spring的运作机制。

(图解:Bean在IoC容器中的旅程)
🔨 三、关键阶段拆解(Spring核心流程)
阶段1:Bean的出生证明 - 实例化
当容器启动,它先根据配置(XML、注解或JavaConfig)搞到Bean的定义信息(BeanDefinition)。接着就像new Object()一样,反射调用构造器把Bean对象创建出来。这时候对象还是个“空壳”,属性没填。
面试踩坑点:构造函数注入就发生在这个阶段!此时依赖的Bean可能还没创建好,小心循环依赖!
阶段2:给Bean“填装备” - 依赖注入
Spring通过属性注入(@Autowired, @Resource)或Setter方法,把Bean需要的其他依赖项“塞”进去。比如你的Service要注入Dao,就是这时候完成的。
阶段3:Bean的“身份证登记” - 设置BeanName&Aware接口
如果Bean实现了BeanNameAware接口,Spring会把它的ID(比如userService)传给它;实现BeanFactoryAware接口,则把工厂对象传给它。Bean这时候就能知道自己叫啥、在哪儿了。
阶段4:出厂前的“质量检查” - BeanPostProcessor前置处理
关键角色登场! Spring会调用所有BeanPostProcessor的postProcessBeforeInitialization方法。这里能对Bean进行魔改,比如搞个代理对象替换原Bean(AOP就是这么干的!)。
阶段5:Bean的“启动仪式” - 初始化方法
这里分三个动作:
InitializingBean接口:如果Bean实现了它,执行afterPropertiesSet()方法。- 自定义init-method:你在XML中配的
init-method或@PostConstruct注解的方法。 - 执行顺序:
@PostConstruct→afterPropertiesSet()→ XML的init-method。
阶段6:最后的“包装美化” - BeanPostProcessor后置处理
再次经过BeanPostProcessor,这次调用postProcessAfterInitialization。比如AOP在这里生成最终的代理对象。经过这一步,Bean就“完全体”了,可以投入使用了。
阶段7:Bean的“上岗服役” - 运行期使用
Bean此时处于容器管理的活跃状态,业务代码随时可以调用它。这也是我们最熟悉的阶段。
阶段8:Bean的“光荣退休” - 销毁阶段
容器关闭时,Spring会通知Bean该“退休”了:
DisposableBean接口:执行destroy()方法。- 自定义destroy-method:XML中配的
destroy-method或@PreDestroy注解方法。 - 执行顺序:
@PreDestroy→destroy()→ XML的destroy-method。

(生命周期流程图 - 核心步骤一目了然)
💡 四、为什么面试官总爱问这个?
- 考察Spring理解深度:是否停留在“会用”层面,懂不懂内部机制。
- 排查问题能力:知道生命周期,才能快速定位Bean创建、注入、初始化的bug。
- 扩展能力:能否自定义
BeanPostProcessor搞点高级玩法(如加密解密)。 - 设计模式应用:工厂模式、模板方法模式在生命周期里体现得淋漓尽致。
🎁 省会员费小贴士:
需要开通面试鸭会员的小伙伴,通过面试鸭返利网找到我下单,立返25元!用省下的钱买杯咖啡刷题更香哦~
🛠 五、关键点记忆技巧(面试这样答)
- 口诀:“实例化→注入属性→塞名字→后置前处理→初始化→后置后处理→销毁”。
- 必提BeanPostProcessor:强调它在AOP和自定义扩展中的核心作用。
- 分清初始化方法执行顺序:
@PostConstruct→InitializingBean→ XML init-method。 - 销毁同理:
@PreDestroy→DisposableBean→ XML destroy-method。 - 说清Aware接口作用:让Bean能主动获取容器信息。

(实战面试场景:Bean生命周期高频考点)
掌握bean生命周期,你就能把Spring的运作机制看得清清楚楚。下次面试官再问,直接把这套流程讲明白,绝对加分!如果想系统刷透Spring高频题,记得用好前面分享的面试宝典资源哦 👇
📚 2025年Java面试宝典:
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g


