查看原文
其他

面试官:谈谈你对 Spring AOP 的了解?请加上这些内容,绝对加分!

儒猿技术团队 石杉的架构笔记 2023-03-06

原价199元,现在参加拼团活动立享优惠价仅 99 元,赶快一起参团吧!

手把手带你吃透Spring框架核心源码

=== 课程简介 ===

想必大家都有面试过程中,被问到Spring框架的经历。绝大部分java开发工程师都用过Spring,在面试中被问到也都能说上一嘴,但能把Spring原理讲清楚的,却少之又少。

为了解决这个问题,儒猿技术窝特别推出了这个Spring源码图文专栏《手把手带你吃透Spring框架核心源码》,整个专栏用大白话讲解Spring框架源码,佐以全链路源码流程图,助你打通阅读Spring源码的任督二脉,轻松了解Spring框架的源码设计思想,在面试的时候过五关斩六将。

=== 课程亮点 ===

来看一看Spring源码专栏讲了什么吧!本专栏主要由以下四个板块组成,内容十分硬核:

  1. 揭开面纱:从零剖析Spring容器初始化过程,带你玩转Spring容器的高阶特性

  2. 渐入佳境:剖析bean加载全流程,带你从上帝视角来看getBean()方法

  3. 游刃有余:剖析AOP代理的创建过程,带你搞定AOP代理诞生的整个过程

  4. 炉火纯青:剖析AOP代理的执行机制,从此AOP将会在你眼前裸奔 




=== 课程目录 ===

第一章:Spring源码构建与BeanDefinition源码剖析

01_Spring源码的准备工作:环境搭建
02_Spring源码的准备工作:Spring的简单使用和原理分析
03_Spring初级容器初始化:Resource到底是个什么玩意儿?
04_Spring初级容器初始化:忽略指定接口自动装配功能
05_Spring初级容器初始化:基础数据的准备
06_Spring初级容器初始化:加载XML的Document
07_Spring初级容器初始化:XML文件的校验模式
08_Spring初级容器初始化:获取声明文件和校验类型
09_Spring初级容器初始化:寻找标签解析的入口
10_Spring初级容器初始化:bean标签的初步解析
11_Spring初级容器初始化:BeanDefinition是什么呢?
12_Spring初级容器初始化:bean的各种子标签解析
13_Spring初级容器初始化:BeanDefinition是如何注册到Spring容器的呢?

第二章:Spring容器ApplicationContext和BeanFactory

14_Spring高级容器初始化:初探容器ApplicationContext初始化
15_Spring高级容器初始化:初始化环境和容器BeanFactory
16_Spring高级容器初始化:初步添加扩展功能点
17_Spring高级容器初始化:BeanFactoryPostProcessor是什么呢?
18_Spring高级容器初始化:BeanFactoryPostProcessor是如何执行的呢?
19_Spring高级容器初始化:BeanPostProcessor是如何注册的呢?
20_Spring高级容器初始化:Spring是如何基于事件驱动的呢?
21_Spring高级容器初始化:初始化非延迟加载单例bean

第三章:bean加载流程与三级缓存解决循环依赖问题

22_bean的加载:转换并获取bean的名称
23_bean的加载:如何通过三级缓存来解决循环依赖(上)
24_bean的加载:如何通过三级缓存来解决循环依赖(下)
25_bean的加载:如何通过FactoryBean来实例化bean?
26_bean的加载:寻找实例化bean的入口
27_bean的加载:Spring默认是如何实例化bean的?
28_bean的加载:通过反射来实例化bean
29_bean的加载:为刚刚实例化的bean填充属性(上)
30_bean的加载:为刚刚实例化的bean填充属性(下)
31_bean的加载:看下bean是如何进行初始化的
32_面试题:IOC和DI之间到底是什么关系?

第四章:Spring依赖注入源码剖析

33_Spring注解源码解析:注解的本质是什么?
34_Spring注解源码解析:动手来模拟下@Component注解的功能
35_Spring注解源码解析:@Component
36_Spring注解源码解析:@Configuration和@Bean(上)
37_Spring注解源码解析:@Configuration和@Bean(下)
38_Spring注解源码解析:@Autowired
39_Spring注解源码解析:@PostConstruct和@PreDestroy

第五章:Spring AOP底层源码剖析

40_Spring AOP简介:一个例子告诉你AOP可以解决哪些问题

41_Spring AOP简介:静态代理、jdk动态代理、cglib动态代理傻傻分不清?

42_AOP代理的创建:虚晃一枪,实例化前竟然也能创建AOP代理?

43_AOP代理的创建:真相大白,初始化后完成了AOP代理的创建

44_AOP代理的创建:@Aspect注解的切面类是怎么找到的?

45_AOP代理的创建:构建Advisor的前提,怎么获取切面类中声明的增强方法?

46_AOP代理的创建:增强方法是怎么一步一步构建为Advisor的?

47_AOP代理的创建:来看下目标类与切点表达式的匹配过程

48_AOP代理的创建:aspectj是怎么来完成方法级别精准匹配的?
49_AOP代理的创建:负责创建代理的ProxyFactory是什么?
50_AOP代理的创建:Spring是如何选择jdk代理和cglib代理的?

第六章:Spring AOP中JDK动态代理源码剖析

51_JDK代理的创建:深入底层,来看下jdk代理对象的创建过程
52_JDK代理的执行:调用$Proxy代理对象方法就回调到invoke()是啥原理?
53_JDK代理的执行:来初步看下invoke()方法的处理流程
54_JDK代理的执行:invoke()方法是怎么获取到拦截器链的?
55_JDK代理的执行:怎么为目标方法匹配适用的增强?
56_JDK代理的执行:来看下Advice的构建过程
57_JDK代理的执行:Advice和拦截器之间是什么关系?
58_JDK代理的执行:来初步看下拦截器链的执行流程
59_JDK代理的执行:拦截器的核心逻辑,递归调用ReflectiveMethodInvocation
60_JDK代理的执行:拦截器链的本质,责任链模式

第七章:Spring AOP中CGLIB代理源码剖析

61_CGLIB代理的创建:通过Enhancer来创建代理
62_CGLIB代理的执行:通过DynamicAdvisedInterceptor来执行增强逻辑
63_AOP拓展:AnnotationAwareAspectJAutoProxyCreator是怎么注入进来的?(上)
64_AOP拓展:AnnotationAwareAspectJAutoProxyCreator是怎么注入进来的?(下)

65_面试题:Spring AOP用到了哪些设计模式?具体体现在哪些地方?

第八章:Spring 事务底层源码剖析

66_Spring事务:先使用AOP来模拟一下@Transactional的功能
67_Spring事务:@Transactional注解竟然是基于AOP实现的?
68_Spring事务:TransactionInterceptor是怎么来控制事务的?
69_Spring事务:来看下TransactionInterceptor增强的匹配过程
70_Spring事务:来看下方法级别匹配时,获取事务属性的过程
71_Spring事务:来看下@Transactional事务代理创建和执行流程
72_Spring事务:遗漏的细节,BeanFactoryTransactionAttributeSourceAdvisor是怎么注册到IOC容器中的?
73_面试题:有哪些场景会导致Spring事务失效?
=== 课程福利 ===
为了让更多同学学到赚到,《手把手带你吃透Spring框架核心源码》现在拼团活动价仅需 99,赶快扫码拼团~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存