Java面试题更新 2026-08-05

请描述Spring IoC容器从启动到可用的整个初始化流程,包括关键步骤和顺序。

后端开发技术原理Java

考察说明

考查对Spring IoC容器启动机制和核心流程的理解

回答思路

  1. 【回答框架 1】IoC容器的初始化是从Resource定位开始的,即根据配置信息(如XML、注解或Java配置)定位并加载Bean定义资源,将其封装为BeanDefinition对象。
  2. 【回答框架 2】接着是BeanDefinition的注册与解析,容器会解析配置中的每个Bean定义,并存储到BeanDefinitionRegistry中。
  3. 【回答框架 3】然后通过BeanFactoryPostProcessor接口对BeanDefinition进行后处理,如PropertyPlaceholderConfigurer会替换占位符,实现配置动态化。
  4. 【回答框架 4】随后容器会实例化单例Bean,顺序上先处理BeanPostProcessor和Aware接口,再执行init-method或InitializingBean回调。
  5. 【回答框架 5】在执行初始化时,若Bean依赖其他Bean,容器会先递归初始化依赖,从而完成整个Bean的创建与依赖注入。
  6. 【关键点 1】Resource定位与BeanDefinition加载是初始化第一步。
  7. 【关键点 2】BeanFactoryPostProcessor可修改Bean定义,如占位符替换。
  8. 【关键点 3】Bean实例化前需注册BeanPostProcessor。
  9. 【关键点 4】单例Bean在容器启动时实例化,遵循依赖顺序。
  10. 【关键点 5】初始化回调顺序包含Aware接口、init-method等。
  11. 【易错点 1】不要把BeanFactoryPostProcessor和BeanPostProcessor的作用混淆。
  12. 【易错点 2】不要忽略BeanPostProcessor在实例化前后的应用时机。
  13. 【易错点 3】不能说所有Bean都是启动时实例化,原型Bean是懒加载的。