摘要: 1、AOP动态代理的字节码文件 1.1、代理对象class的核心伪代码 1 public class MathCalculator$$EnhancerBySpringCGLIB$$9bfe5203 extends MathCalculator implements SpringProxy, Advi 阅读全文
posted @ 2022-12-29 20:43 无虑的小猪 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 在Spring AOP源码(二):BeanDefinition的准备工作中,介绍了Spring准备AOP相关的BeanDefinition对象,同样的对于普通的bean对象的创建此处不再赘述,主要分析动态代理创建器、Advisor是如何实例化的。 1、动态代理模式创建器实例化 在上一篇中已经知道Sp 阅读全文
posted @ 2022-12-28 20:35 无虑的小猪 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1、aop.xml配置文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/200 阅读全文
posted @ 2022-12-27 20:08 无虑的小猪 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 在Spring容器中,要想创建AOP相关的对象就需要创建先准备好相关的beanDefinition信息,这里对于普通bean对象的beanDefinition准备不再赘述,仅介绍AOP的核心对象:AutoProxyCreator和Advisor的BeanDefinition对象的创建过程。 1、be 阅读全文
posted @ 2022-12-27 20:03 无虑的小猪 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 1、源码解析 getBean(name)是在IOC容器的顶级接口BeanFactory中定义,由其子类AbstractBeanFactory实现的方法。是IOC容器启动过程中的核心方法。核心方法流程 getBean -> doGetBean -> createBean -> doCreateBean 阅读全文
posted @ 2022-12-26 19:41 无虑的小猪 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 1、源码解析 1.1、整体逻辑剖析 finishBeanFactoryInitialization(beanFactory);初始化非懒加载的单实例,完成IOC容器的初始化操作。 1 // 完成IOC容器的初始化操作 2 protected void finishBeanFactoryInitial 阅读全文
posted @ 2022-12-25 19:36 无虑的小猪 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 1、源码解析 registerBeanPostProcessors(beanFactory); 注册bean的后置处理器。 1 // 按照指定的顺序实例化并注册bean的后置处理器,仅做注册 2 protected void registerBeanPostProcessors(Configurab 阅读全文
posted @ 2022-12-24 19:31 无虑的小猪 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 1、源码解析 invokeBeanFactoryPostProcessors(beanFactory)调用各种beanFactory处理器,该方法主要实例化所有已经注册的beanFactoryPostProcessor。 1.1、BeanFactory后置处理核心流程图 1.2、BeanFactor 阅读全文
posted @ 2022-12-23 20:09 无虑的小猪 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 1、源码解析 prepareBeanFactory(beanFactory)是beanFactory的准备工作,主要是对beanFactory的各种属性做填充。 1 // beanFactory的准备工作,配置容器上下文,如容器的类加载器和后置处理器 2 protected void prepare 阅读全文
posted @ 2022-12-22 20:05 无虑的小猪 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 1、源码解析 配置文件的bean定义解析在obtainFreshBeanFactory()方法中完成的,核心解析是在DefaultBeanDefinitionDocumentReader的parseBeanDefinitions()方法中完成。 1 // 解析配置文件为beanDefinition, 阅读全文
posted @ 2022-12-21 20:53 无虑的小猪 阅读(48) 评论(0) 推荐(0) 编辑