随笔分类 - Spring
1
摘要:1、事务传播特性 Springs事务传播特性: 名称 解释 REQUIRED 支持当前事务,如果当前没有事务,就新建一个事务。 Spring 默认的事务传播特性 支持外层事务 SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行 MANDATORY 支持当前事务,如果当前没有事务,则
阅读全文
摘要:一、执行入口 Spring事务是通过AOP实现,在AOP源码(五):具体执行流程 - 责任链模式中提到AOP流程执行入口为CglibAopProxy#DynamicAdvisedInterceptor#intercept,事务的代理对象入口也是如此。 二、执行流程 在事务源码(三):事务相关对象的创
阅读全文
摘要:事务源码(二)中,已经分析了beanDefinition的加载,下面来创建对应beanDefinition的bean。 1、PropertySourcesPlaceholderConfigurer 创建占位符处理的bean PropertySourcesPlaceholderConfigurer实现
阅读全文
摘要:在AOP源码(三):创建AOP相关的Bean中,介绍了Spring创建AOP的Advisor、AnnotationAwareAspectJAutoProxyCreator的创建,其中被代理类的代理对象是如何创建的未做说明,下面来看看AOP代理对象的创建。 在IOC容器启动完成,容器一级缓存singl
阅读全文
摘要:普通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
阅读全文
摘要:最近对项目做优化,将硬编码在代码中的错误信息、提示信息抽取出来,整合到文件中以方便修改。经过查找资料发现Spring的MessageSource可满足这个需求。下面记录一下学习的时候写的demo。 一、SpringBoot配置国际化(Java Bean的配置方式) 1、目录结构 2、pom.xml文
阅读全文
1