摘要: 目录1. 要研究的代码2. 获取所有类型为BeanPostProcessor的PostProcessor3. 遍历分成PriorityOrdered、MergedBeanDefinitionPostProcessor、Ordered、普通的四类4. 排序、把实现了PriorityOrdered的Be 阅读全文
posted @ 2025-07-04 19:03 ThinkerQAQ 阅读(18) 评论(0) 推荐(0)
摘要: 目录1. 要研究的代码2. 处理BeanDefinitionRegistryPostProcessor类型的PostProcessor2.1. 当前bean工厂是BeanDefinitionRegistry2.1.1. 处理传递进来的beanFactoryPostProcessors2.1.1.1. 阅读全文
posted @ 2025-07-04 19:03 ThinkerQAQ 阅读(14) 评论(0) 推荐(0)
摘要: 目录1. 要分析的代码2. 创建ApplicationContext2.1. AnnotationConfigApplicationContext构造方法2.2. 刷新ioc容器2.2.1. 准备刷新2.2.2. 获取刷新后的BeanFactory2.2.3. 准备BeanFactory2.2.4. 阅读全文
posted @ 2025-07-04 13:05 ThinkerQAQ 阅读(9) 评论(0) 推荐(0)
摘要: 目录源码分析1. @EnableAspectJAutoProxy2. AspectJAutoProxyRegistrar3. AopConfigUtils3.1. registerAspectJAnnotationAutoProxyCreatorIfNecessary3.2. registerOrE 阅读全文
posted @ 2025-07-04 11:24 ThinkerQAQ 阅读(49) 评论(0) 推荐(0)
摘要: 目录1. 继续放行断点执行Calc.div2. 进入到代理对象的intercept方法2.1. 获取拦截器链2.1.1. 将增强器转换成Inteceptor2.2. 有拦截器则执行拦截器和目标方法2.2.1. 最后的流程是这样执行的 1. 继续放行断点执行Calc.div 2. 进入到代理对象的in 阅读全文
posted @ 2025-07-04 10:40 ThinkerQAQ 阅读(10) 评论(0) 推荐(0)
摘要: 目录1. 跟踪调用栈至postProcessBeforeInstantiation2. 判断是否需要创建代理对象2.1. 不需要创建代理对象的情况3. 其他情况为bean创建代理对象3.1. 用增强器包装3.1.1. 找出合适的增强器3.1.2. 用增强器去创建代理对象3.1.2.1. 根据情况使用 阅读全文
posted @ 2025-07-04 10:39 ThinkerQAQ 阅读(19) 评论(0) 推荐(0)
摘要: 目录1. 继续研究BeanPostProcessor的postProcessBeforeInstantiation和postProcessAfterInitialization2. 创建其他单实例bean2.1. 给BeanPostProcess一个机会返回代理对象2.1.1. 执行postProc 阅读全文
posted @ 2025-07-04 10:39 ThinkerQAQ 阅读(22) 评论(0) 推荐(0)
摘要: 目录1. 类继承图2. 分析调用栈3. 首先研究BeanFactoryAware接口的setBeanFactory的调用栈3.1. 注册AnnotationAwareAspectJAutoProxyCreator3.2. 创建AnnotationAwareAspectJAutoProxyCreato 阅读全文
posted @ 2025-07-03 11:22 ThinkerQAQ 阅读(9) 评论(0) 推荐(0)
摘要: 目录1. 开启AOP2. 注册AspectJAnnotationAutoProxyCreator组件3. ImportBeanDefinitionRegistrar的registerBeanDefinitions是什么步骤被调用的3.1. 跟踪ConfigurationClassProprocess 阅读全文
posted @ 2025-07-03 11:20 ThinkerQAQ 阅读(26) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 使用3. 源码分析3.1. 构造方法3.2. 属性3.3. 其他方法4. 总结 1. 是什么 无序、不重复的集合,使用TreeMap实现 2. 使用 public class TreeSetTest { public static void main(String[] args 阅读全文
posted @ 2025-07-02 11:53 ThinkerQAQ 阅读(14) 评论(0) 推荐(0)