Spring启动时如何创建 Bean 对象,过程是什么样的
题目
Spring 启动时是怎么创建 Bean 的?
参考答案
大致流程:
- 扫描并注册 BeanDefinition
- 实例化 Bean
- 属性注入
- 执行各种 Aware 和 PostProcessor
- 初始化
- 放入单例池
如果 Bean 需要 AOP,Spring 还可能在这个过程中生成代理对象。
回答展开
- 对象创建题建议按类加载、内存分配、默认初始化、构造执行的顺序来讲。
- 如果能补充 TLAB、对象头和逃逸分析,会更显得有深度。
- 这类题本质上在考你是否理解 JVM 对象生命周期的起点。
实际场景
比如某个接口在循环里频繁 new 临时对象,虽然代码本身没错,但很可能造成年轻代对象暴涨和频繁 GC,这类问题在性能优化里很常见。