在前面源码分析的过程中,有几次出现过一段代码InterceptorChain.pluginAll(),而这就是使用插件通过动态代理的方式对mybatis进行功能增强,我们平时...
在前面源码分析的过程中,有几次出现过一段代码InterceptorChain.pluginAll(),而这就是使用插件通过动态代理的方式对mybatis进行功能增强,我们平时...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(二):broker...
RocketMQ源码(一):NameServer的启动[https://www.jianshu.com/p/fd8916c73c32]RocketMQ源码(三):broker...
RocketMQ源码(二):broker的启动(一)[https://www.jianshu.com/p/aeb2636c3019]RocketMQ源码(三):broker的...
上图就是spring事务一个比较完整的xml配置了,从前文中可知,spring的启动是从xml的解析开始的。所以先了解下这段代码中的 标签和<tx/>标签的解析过程。 标签是...
想要了解spring事务的实现原理,一个绕不开的点就是AOP,因为事务就是依靠AOP实现的,所以在了解事务的实现前,先了解下AOP的实现原理。在前面的解析bean加载过程中我...
从类继承图可以看出,ApplicationContext已经聚合了很多重要的接口,并且它的子类ConfigurableApplicationContext还定义了许多重要的接...
initializeBean是进行bean初始化的,主要做了三件事:1.激活 Aware 方法2.后置处理器的应用3.激活自定义的 init 方法 1 invokeAware...
接下来以单例模式为例,一起看看在前面那么多的准备工作后,现在是如何创建 bean 对象的。 7.1 getSingleton 核心的还是 singletonFactory.g...
当从第三步没有获取到对应的bean,也就是不存在循环依赖以及重复获取bean的情况下,就会走接下来的4、5、6、7这几个步骤实例化以及初始化对象。 4 parentBeanF...
本文会介绍上文中提到的<1>,<2>,<3>这三个步骤的内容 1 transformedBeanName 这段代码的作用主要有两个:1.如果传入的bean name是别名,那...
通过bean的加载机制来实现ioc依赖注入,这比bean的解析要复杂的多。更好的理解bean的加载过程有助于我们了解spring所提供的各种扩展机制,利用这些扩展机制可以解决...
本系列的文章会以spring为中心,在学习了spring源码后会发散性的学习它的一些企业级应用,如:spring-dubbo,spring-mybatis等方面。旨在了解sp...
虚拟机吧描述类相关的class文件(也就是二进制的字节流)加载到内存中,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机使用的java类型,这就是虚拟机的类加载机制。...