Skip to content

09 — 进阶与源码

定位: Spring 框架核心源码深度剖析——从容器启动到事件机制 面试高频度: ⭐⭐⭐⭐

一、板块在体系中的位置

+----------------------------------------------------+
|         进阶源码在 Spring 体系中的位置                 |
|                                                     |
|  01. IoC 容器 (核心源码) -> 09. 进阶源码 (本板块)     |
|  02. AOP (代理源码)     ->     |                     |
|  03. 事务管理 (事务源码) ->     |                     |
|                                v                     |
|  09.1 refresh() 12步 (IoC 容器启动源码)               |
|  09.2 @Configuration 增强 + @Import (配置解析源码)    |
|  09.3 事件机制 (观察者模式源码)                        |
|  09.4 异步与定时任务 (@Async/@Scheduled 源码)          |
+----------------------------------------------------+

二、子专题导航

#主题面试频率核心内容
**09.1-refresh()启动流程**⭐⭐⭐⭐⭐AbstractApplicationContext.refresh() 12步详解
**09.2-@Configuration增强与@Import**⭐⭐⭐⭐Full vs Lite 模式、@Import 三种方式、@Enable* 原理
**09.3-事件机制**⭐⭐⭐⭐ApplicationEvent/Listener/Multicaster、@EventListener、@TransactionalEventListener
**09.4-异步任务与定时任务**⭐⭐⭐@Async 源码、@Scheduled 配置、线程池配置

三、核心面试题

  1. refresh() 方法的 12 步中,哪一步最关键?为什么?
  2. Spring 如何推断使用哪个构造方法实例化 Bean?
  3. @Configuration 类加 final 关键字会怎样?Full 模式和 Lite 模式的区别?
  4. @Import 的三种方式分别适用什么场景?
  5. BeanFactoryPostProcessor 和 BeanPostProcessor 的异同?
  6. FactoryBean 的典型应用场景?如何获取 FactoryBean 本身而不是其产品?
  7. Spring 事件机制是同步还是异步?如何改为异步?
  8. @Scheduled 和 @Async 组合使用的注意点?
  9. @TransactionalEventListener 和 @EventListener 的区别?

四、相关板块

  • **IoC 容器** — refresh() 的核心产物
  • **AOP** — @Configuration CGLIB 增强
  • **测试与质量** — 测试异步方法

📚 相关链接

  • **Spring文库设计文档** — 文库设计总纲

Knowledge4J — Java 知识库