一、手写模拟 Spring 框架核心逻辑

  1. 了解 Spring 工作的大概流程
  2. 熟悉 BeanDefinition、BeanFactory、Bean 等概念
  3. 熟悉 Bean 的生命周期,Bean 的后置处理器等基本概念

二、 Spring 的核心概念

  1. BeanDefinition
  2. AnnotatedBeanDefinitionReader
  3. XmlBeanDefinitionReader
  4. ClassPathBeanDefinitionScanner
  5. BeanFactory
  6. ApplicationContext
  7. 类型转化
  8. BeanPostProcessor
  9. BeanFactoryPostProcessor
  10. FactoryBean

三、Spring 中的 Bean 的生命周期

  1. Bean 创建的生命周期
  2. Bean 销毁的生命周期

四、Spring 中的依赖注入

  1. Spring 中依赖注入的几种方式
  2. AutowiredAnnotationBeanPostProcessor 解析
  3. resolveDependency 方法解析
  4. findAutowireCandidates 方法解析
  5. @Autowired 源码
  6. @Resource 源码

五、Spring 启动过程分析

  1. 什么是 BeanFactoryPostProcessor
  2. ApplicationContext 启动过程

六、Spring 解析配置类以及扫描源码

  1. BeanFactoryPostProcessor 执行流程
  2. 配置类解析过程
    1. @Component 注解底层工作原理
    2. @ComponentScan 注解底层工作原理
    3. @Bean 注解底层工作原理
    4. @Configuration 注解底层工作原理
    5. @Import 注解底层工作原理

七、Spring 的推断构造方法

  1. Bean 的实例化过程
  2. 推断构造方法源码解析
  3. SmartInstantiationAwareBeanPostProcessor 解析

八、Spring 整合 MyBatis 源码分析

九、Spring 的循环依赖

十、Spring 整合 MyBatis 源码解析

十一、Spring 中 AOP 的实现和源码解析

十二、Spring 事务机制的底层源码解析

  1. 数据库的事务
  2. @Transactional 注解底层工作原理和源码分析
  3. 传播机制源码分析
  4. TranscationSynchronizationManager 源码分析

面试可能会问的一些 Spring 知识

  • 你是如何理解 Spring 中的 IOC、DI、AOP 这些概念的,说下你自己的理解
  • 你怎么理解 Spring Framework、Spring Boot、Spring Cloud 之间的关系
  • 知道 Bean 的生命周期吗?说说它有哪些步骤?每个步骤是用来干什么的
  • 听说过 Spring 中的后置处理器吗?说说你的理解
  • Spring 中有哪些扩展点?Spring 和 Mybatis 进行整合用到哪些,是怎么实现的
  • Spring 事务是如何实现的?有哪些情况会导致 Spring事务失效?为什么会失效
  • Spring中的 AOP 什么时候用 Cglib,什么时候用 JDK 动态代理
  • 知道 Spring 中的循环依赖吗?如果仅仅只用二级缓存来解决,还会出现什么问题?
  • 知道 Spring 中的推断构造方法吗?底层是如何实现的?
  • 说说 @Autowired、@Resource、@Value、@Inject 这几个注解的区别与底层实现
  • Spring 和 Mybatis 整合后,为什么会导致 Mybatis 一级缓存失效,如何解决
  • 说说 Spring 事务的隔离级别、传播机制的底层实现原理,以及开发过程需要注意的点
  • 能否说下 ApplicationContext 的启动流程中做了哪些事情
  • Spring Boot 是如何实现零配置的,用到了 Spring 中的哪些技术