spring
暗夜零星
学习的过程,就是模仿规则,然后超脱规则。
链接:https://wlizhi.cc
展开
-
给spring提了一个issue
title: “给spring提了一个issue”date: 2020-12-11T12:47:01+08:00draft: falsetags: [“spring源码”,“spring问题”]categories: [“spring”]昨天给spring提了一个issue,这个问题在 声明式事务注意事项 中有描述过。关于spring声明式事务传播行为 REQUIRES_NEW,如果不做额外处理,可能会导致所有数据库连接被占用的问题。一直搞不明白,这里隐藏着很大的问题,为什么要有这个传播行为.原创 2020-12-11 14:17:23 · 421 阅读 · 1 评论 -
19 事务的挂起、提交、回滚、连接的释放原理
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 事务的挂起事务的挂起,调用的是 suspend()。以下是 suspend() 源码:public abstract class AbstractPlatformTransactionManager implements PlatformTransac原创 2020-12-07 13:28:25 · 2643 阅读 · 0 评论 -
18 事务注解@Transaction的解析原理
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。[17 声明式事务执行流程源码分析] 中已经列举,通过 getTransactionAttribute() 获取到了方法上事务注解的一些信息。来到其源码:public abstract class AbstractFallbackTransactionAtt原创 2020-12-07 13:27:28 · 719 阅读 · 0 评论 -
17 声明式事务执行流程源码分析
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 执行入口在 声明式事务中XML配置及注解方式的注册入口 中,已经详细列举了事务注入入口的源码。其中主要有三个比较关键的类:BeanFactoryTransactionAttributeSourceAdvisor 增强类,其中封装了Advice,以及T原创 2020-12-07 13:26:56 · 174 阅读 · 0 评论 -
16 声明式事务注意事项
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 不正确使用声明式事务的危害作为后端开发人员,spring声明式事务是我们经常使用的。一定要透彻理解事务的传播行为,否则开发出来的代码大概率是有问题的。影响性能是其一,还可能会出现一些极难排查的“脏数据”,甚至发生死锁、影响整个进程的服务。影响性能的原因:原创 2020-12-07 13:25:44 · 256 阅读 · 0 评论 -
15 声明式事务七种传播行为的表现形式案例
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 基础概念spring声明式事务的传播行为,严格来说是spring特有的,数据库本身并没有这个概念。本文会列举出spring事务的七种传播行为,并以代码案例的方式展示不同的传播行为的表现是怎样的。1.1 什么是事务传播行为事务传播行为用来描述由某一个事务原创 2020-12-06 21:44:49 · 1044 阅读 · 0 评论 -
14 声明式事务中XML配置及注解方式的注册入口
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。事务以xml配置方式使用时,xml是怎么解析,并将事务功能注册到容器中的?注解方式启动时,是怎么扫描注解将事务功能注册到容器中的?本文给出了详细的解析。1 xml方式xml方式开启事务注解,是使用 <tx:annotation-driven/>原创 2020-12-06 21:44:34 · 257 阅读 · 0 评论 -
13 AOP MethodInterceptor执行原理
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 代理方法执行回顾在代理对象方法被调用时,会获取到执行链,将其封装在 ProxyMethodInvocation 中,调用 proceed(),通过递归方式,依次调用执行链中的通知方法节点,最终会调用到代理方法,然后回转到调用处。回转过程中可能存在后置通知方原创 2020-12-06 21:44:14 · 1416 阅读 · 0 评论 -
12 AOP 执行链的创建和执行原理
title: “12 AOP 执行链的创建和执行原理”date: 2020-12-01T20:34:31+08:00draft: falsetags: [“spring源码”]categories: [“spring”]Description: AOP 中代理对象生成后,在调用代理方法时,以 JDK 动态代理为例,执行链的生成、执行链火炬传递式的调用源码解析。spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-fr.原创 2020-12-06 21:43:52 · 871 阅读 · 0 评论 -
11 AOP 代理实例的创建
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 创建实例的流程创建代理实例在 createProxy() 中进行。createProxy() 中有两个比较关键的方法:buildAdvisors()getProxy()源码如下:public abstract class AbstractAu原创 2020-12-05 14:47:56 · 127 阅读 · 0 评论 -
10 AOP Advisor的封装与搜集
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 主流程AOP是通过 BeanPostProcessor.postProcessAfterInitialization() 实现的,来到 doCreateBean() -> initializeBean(),在初始化方法执行完成后,会调用 applyB原创 2020-12-05 14:47:22 · 110 阅读 · 0 评论 -
09 AOP AbstractAutoProxyCreator的注册
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 AOP入口AOP是通过 BeanPostProcessor.postProcessAfterInitialization() 实现的,来到 doCreateBean() -> initializeBean(),在初始化方法执行完成后,会调用 appl原创 2020-12-05 14:46:23 · 185 阅读 · 0 评论 -
08 ConfigurationClassPostProcessor源码解析
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 主流程在调用 invokeBeanDefinitionRegistryPostProcessors() 是,会调用到这个实现类中,来到源码:{{< highlight java “linenos=table,hl_lines=12 25 36,li原创 2020-12-05 14:45:49 · 141 阅读 · 0 评论 -
07 复杂对象的构建方式 - FactoryBean
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 FactoryBean 的作用Spring 中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean 即 FactoryBean。FactoryBean跟普通Bean不同,其返回的对象不是指定类的一个实例,而是该FactoryBean的getObj原创 2020-12-05 14:45:14 · 234 阅读 · 0 评论 -
06 循环依赖的实现原理
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 什么是循环依赖在我们日常开发中,肯定存在这种情况:bean A 某个成员是 bean B,bean B 中某个属性是 bean A。那A类和B类就是相互依赖的关系,也叫循环依赖。当然,也可以是这种情况 A -> B -> C -> D原创 2020-12-05 14:44:37 · 321 阅读 · 0 评论 -
05 Bean实例化整体流程
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 常见的ApplicationContext实现类:spring容器都是从构造一个ApplicationContext对象开始的,以下是spring中常见的ApplicationContext实现。容器:AbstractApplicationContex原创 2020-12-05 14:43:48 · 144 阅读 · 0 评论 -
04 BeanPostProcessor的注册
spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 BeanPostProcessor的作用BeanPostProcessor是对SpringIOC容器中bean实例化的一些扩展,在bean实例化的关键节点进行了一些插桩。真正实例化bean的方法是beanFactory.getBean()方法。而在bea原创 2020-12-05 14:43:10 · 278 阅读 · 0 评论 -
03 BeanFactoryPostProcessor的注册与执行
title: “03 BeanFactoryPostProcessor的注册与执行”date: 2020-11-24T09:14:28+08:00draft: falsetags: [“spring源码”]categories: [“spring”]Description: spring ioc容器初始化时,首先创建BeanFactory对象,搜集BeanDefinition,在完成之后,会优先先实例化BeanDefinitionRegistryPostProcessor和BeanFactory.原创 2020-12-05 14:40:48 · 679 阅读 · 0 评论 -
02 Spring标签解析-BeanDefinitionParser
链接(本人):wlizhi.ccspring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。本文是对 Spring程序入口和XML解析 的知识点扩展,详细解析其中提到的BeanDefinitionParser的作用,以及一些典型的XML方式解析的实现类。1 BeanDefinitionParser接口的定义pub原创 2020-12-05 14:38:47 · 2200 阅读 · 0 评论 -
01 Spring程序入口和XML解析
title: “Spring程序入口和XML解析”date: 2020-11-22T12:00:00+08:00draft: falsetoc: truetags: [“spring源码”]categories: [“spring”]Spring源码的程序入口,和XML解析的源码流程。1 前言Spring源码Gitee传送门 (本人从 github 中下载,然后以自身理解对核心流程及主要节点做了详细的中文注释。建议下载、结合 Spring 系列文章阅读源码)spring源码系列文章,.原创 2020-12-01 10:03:04 · 190 阅读 · 0 评论