12 2022 档案
摘要:普通bean标签的beanDefinition的解析不再赘述,仅对事务相关的核心beanDefinition的获取做分析。 一、BeanDefinition预览 IOC容器刷新完成后,容器中的BeanDefinition详情如下: Spring中的事务是基于AOP实现的,在实现AOP中有几个核心的对
阅读全文
摘要:1、新建数据库及表 商品库存表 1 CREATE TABLE `product_stock` ( 2 `goods_id` VARCHAR ( 30 ) NOT NULL, 3 `stock` INT ( 8 ) DEFAULT NULL, 4 PRIMARY KEY ( `goods_id` )
阅读全文
摘要:1、AOP动态代理的字节码文件 1.1、代理对象class的核心伪代码 1 public class MathCalculator$$EnhancerBySpringCGLIB$$9bfe5203 extends MathCalculator implements SpringProxy, Advi
阅读全文
摘要:在Spring AOP源码(二):BeanDefinition的准备工作中,介绍了Spring准备AOP相关的BeanDefinition对象,同样的对于普通的bean对象的创建此处不再赘述,主要分析动态代理创建器、Advisor是如何实例化的。 1、动态代理模式创建器实例化 在上一篇中已经知道Sp
阅读全文
摘要: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
阅读全文
摘要:在Spring容器中,要想创建AOP相关的对象就需要创建先准备好相关的beanDefinition信息,这里对于普通bean对象的beanDefinition准备不再赘述,仅介绍AOP的核心对象:AutoProxyCreator和Advisor的BeanDefinition对象的创建过程。 1、be
阅读全文
摘要:1、源码解析 getBean(name)是在IOC容器的顶级接口BeanFactory中定义,由其子类AbstractBeanFactory实现的方法。是IOC容器启动过程中的核心方法。核心方法流程 getBean -> doGetBean -> createBean -> doCreateBean
阅读全文
摘要:1、源码解析 1.1、整体逻辑剖析 finishBeanFactoryInitialization(beanFactory);初始化非懒加载的单实例,完成IOC容器的初始化操作。 1 // 完成IOC容器的初始化操作 2 protected void finishBeanFactoryInitial
阅读全文
摘要:1、源码解析 registerBeanPostProcessors(beanFactory); 注册bean的后置处理器。 1 // 按照指定的顺序实例化并注册bean的后置处理器,仅做注册 2 protected void registerBeanPostProcessors(Configurab
阅读全文
摘要:1、源码解析 invokeBeanFactoryPostProcessors(beanFactory)调用各种beanFactory处理器,该方法主要实例化所有已经注册的beanFactoryPostProcessor。 1.1、BeanFactory后置处理核心流程图 1.2、BeanFactor
阅读全文
摘要:1、源码解析 prepareBeanFactory(beanFactory)是beanFactory的准备工作,主要是对beanFactory的各种属性做填充。 1 // beanFactory的准备工作,配置容器上下文,如容器的类加载器和后置处理器 2 protected void prepare
阅读全文
摘要:1、源码解析 配置文件的bean定义解析在obtainFreshBeanFactory()方法中完成的,核心解析是在DefaultBeanDefinitionDocumentReader的parseBeanDefinitions()方法中完成。 1 // 解析配置文件为beanDefinition,
阅读全文
摘要:1、源码解析 obtainFreshBeanFactory()方法包含了 Spring的IOC容器 - DefaultListableBeanFactory对象的创建、解析配置文件中的bean信息加载至容器中。 1 // 创建容器对象DefaultListableBeanFactory,加载xml配
阅读全文
摘要:1、源码解析 prepareRefresh()容器刷新refresh()的第一个方法,是容器刷新前的准备工作。 1 // 容器启动的开始时间 毫秒级 2 private long startupDate; 3 // 容器目前是否活跃的标记 4 private final AtomicBoolean
阅读全文
摘要:Spring有两种方式加载配置,分别为xml文件、注解的方式,对于xml配置的方式相信大家都不陌生,往往通过new ClassPathXmlApplicationContext("*.xml")就能启动容器了,下面让我们来看看Spring的容器启动都做了哪些事情。 1、ClassPatchXmlAp
阅读全文