摘要:
目录1. 要研究的代码2. 实例化所有非懒加载的单实例bean2.1. 获取所有BeanName,一个个创建2.2. 创建单个bean2.3. 看看之前创建bean有木有,没有再去创建【不是缓存,而是之前步骤创建的Bean】2.4. 从缓存中获取,没有再创建2.5. 先看看能不能返回代理对象,不能再 阅读全文
posted @ 2025-07-04 21:23
ThinkerQAQ
阅读(149)
评论(0)
推荐(0)
摘要:
目录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)

浙公网安备 33010602011771号