一、手写模拟 Spring 框架核心逻辑
- 了解 Spring 工作的大概流程
- 熟悉 BeanDefinition、BeanFactory、Bean 等概念
- 熟悉 Bean 的生命周期,Bean 的后置处理器等基本概念
二、 Spring 的核心概念
- BeanDefinition
- AnnotatedBeanDefinitionReader
- XmlBeanDefinitionReader
- ClassPathBeanDefinitionScanner
- BeanFactory
- ApplicationContext
- 类型转化
- BeanPostProcessor
- BeanFactoryPostProcessor
- FactoryBean
三、Spring 中的 Bean 的生命周期
- Bean 创建的生命周期
- Bean 销毁的生命周期
四、Spring 中的依赖注入
- Spring 中依赖注入的几种方式
- AutowiredAnnotationBeanPostProcessor 解析
- resolveDependency 方法解析
- findAutowireCandidates 方法解析
- @Autowired 源码
- @Resource 源码
五、Spring 启动过程分析
- 什么是 BeanFactoryPostProcessor
- ApplicationContext 启动过程
六、Spring 解析配置类以及扫描源码
- BeanFactoryPostProcessor 执行流程
- 配置类解析过程
- @Component 注解底层工作原理
- @ComponentScan 注解底层工作原理
- @Bean 注解底层工作原理
- @Configuration 注解底层工作原理
- @Import 注解底层工作原理
七、Spring 的推断构造方法
- Bean 的实例化过程
- 推断构造方法源码解析
- SmartInstantiationAwareBeanPostProcessor 解析
八、Spring 整合 MyBatis 源码分析
九、Spring 的循环依赖
十、Spring 整合 MyBatis 源码解析
十一、Spring 中 AOP 的实现和源码解析
十二、Spring 事务机制的底层源码解析
- 数据库的事务
- @Transactional 注解底层工作原理和源码分析
- 传播机制源码分析
- 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 中的哪些技术