自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

暗夜零星的博客

技术分享

  • 博客(23)
  • 收藏
  • 关注

原创 给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 2644

原创 18 事务注解@Transaction的解析原理

spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。[17 声明式事务执行流程源码分析] 中已经列举,通过 getTransactionAttribute() 获取到了方法上事务注解的一些信息。来到其源码:public abstract class AbstractFallbackTransactionAtt

2020-12-07 13:27:28 719

原创 17 声明式事务执行流程源码分析

spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 执行入口在 声明式事务中XML配置及注解方式的注册入口 中,已经详细列举了事务注入入口的源码。其中主要有三个比较关键的类:BeanFactoryTransactionAttributeSourceAdvisor 增强类,其中封装了Advice,以及T

2020-12-07 13:26:56 174

原创 16 声明式事务注意事项

spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 不正确使用声明式事务的危害作为后端开发人员,spring声明式事务是我们经常使用的。一定要透彻理解事务的传播行为,否则开发出来的代码大概率是有问题的。影响性能是其一,还可能会出现一些极难排查的“脏数据”,甚至发生死锁、影响整个进程的服务。影响性能的原因:

2020-12-07 13:25:44 256

原创 15 声明式事务七种传播行为的表现形式案例

spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 基础概念spring声明式事务的传播行为,严格来说是spring特有的,数据库本身并没有这个概念。本文会列举出spring事务的七种传播行为,并以代码案例的方式展示不同的传播行为的表现是怎样的。1.1 什么是事务传播行为事务传播行为用来描述由某一个事务

2020-12-06 21:44:49 1044

原创 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

原创 13 AOP MethodInterceptor执行原理

spring源码系列文章,示例代码的中文注释,均是 copy 自 https://gitee.com/wlizhi/spring-framework 。链接中源码是作者从 github 下载,并以自身理解对核心流程及主要节点做了详细的中文注释。1 代理方法执行回顾在代理对象方法被调用时,会获取到执行链,将其封装在 ProxyMethodInvocation 中,调用 proceed(),通过递归方式,依次调用执行链中的通知方法节点,最终会调用到代理方法,然后回转到调用处。回转过程中可能存在后置通知方

2020-12-06 21:44:14 1416

原创 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

原创 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

原创 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

原创 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

原创 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

原创 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

原创 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

原创 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

原创 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 279

原创 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

原创 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

原创 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 191

原创 logback-spring.xml配置

<?xml version="1.0" encoding="UTF-8"?><!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --><!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --><!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如.

2020-07-28 18:13:13 97

原创 安装CentOS7minimal版后的一些配置项

虚拟机环境:VMware12 + centos7minimal版网络配置配置上网网卡enp0s3ip addr:查看网卡地址会发现虚拟网卡没有inet属性(ip) nmcli d:网络管理命令行工具查看网卡设备状态,发现网卡未连接 nmtui:进入网络管理界面,编辑网卡操作如下,进行开机自动连接 systemctl restart network.service:重启网络即可配置和主机通信网卡enp0s8关闭模拟器后在network settins选项中的network下,点击第二个A

2020-07-28 18:08:27 246

原创 sql调优-sql拆分

javaweb开发中,一些业务数据的查询,经常会有连表查询的需求、排序分组等,连表分页查询有个很严重的弊端:当表中数据量大到一定程度,由于计算量的指数型增加,会导致运算很慢,数据库压力随之增加。这时候需要将一条复杂sql拆分成多条简单sql,以减少运算量为目的的拆分。拆分原则:条件最早时机判定,减少连表,将分页后的数据值作为外键查询附属数据,进而提升sql执行效率。这里的slq拆分分为两步:1...

2019-10-10 15:13:18 1943

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除