4 龚厂长

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 11w+

Mybatis解析-自动注解MybatisAutoConfiguration详解

本文基于mybatis-spring 1.3.1和mybatis 3.4.4版本该文件配置了MybatisAutoConfiguration作为mybatis的自动配置类。本文下面将详细分析该类。从注解上可以看出该类依赖于DataSource实例,mybatis使用的配置类是MybatisProperties,使用XML文件配置的大部分属性都可以通过MybatisProperties配置sqlSessionFactorysqlSessionTemplate

2020-10-18 21:02:10

Mybatis解析-如何编写插件

mybatis-spring 1.3.1和mybatis 3.4.4mybatis提供了插件,允许我们在mybatis执行过程中的某一点进行拦截调用。MyBatis允许使用插件拦截的方法包括:Executor (update, query, flushStatements, commit, rollback,getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHand

2020-10-18 14:51:25

Mybatis解析-执行器Executor详解

本文基于mybatis-spring 1.3.1和mybatis 3.4.4版本SqlSession执行增删改查都是委托给Executor完成的。Executor主要完成以下几项内容:处理缓存,包括一级缓存和二级缓存获取数据库连接创建Statement或者PrepareStatement对象访问数据库执行SQL语句处理数据库返回结果CachingExecutorBaseExecutorSimpleExecutorBatchExecutorReuseExecutor

2020-10-17 22:58:21

Mybatis解析-缓存原理解析

本文基于mybatis-spring 1.3.1和mybatis 3.4.4版本mybatis提供了两级缓存,一个在事务内部使用的一级缓存,另一个可以全局使用的二级缓存。

2020-10-17 14:40:09

Mybatis解析-使用mybatis查询原理解析

本文基于mybatis-spring 1.3.1和mybatis 3.4.4版本本文分析一下Mybatis如何进行查询。MybatisAutoConfiguration作为mybatis自动配置类,它创建SqlSessionTemplate。在SqlSessionTemplate的构造方法里面会创建SqlSession代理: public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory, ExecutorType executorTy.

2020-10-14 22:52:56

Mybatis解析-注解MapperScan详解

本文基于mybatis-spring 1.3.1和mybatis 3.4.4版本注解MapperScan是mybatis的核心注解,它可以设置Mapper文件的扫描路径。本文将详细介绍该注解以及各个属性作用。文章目录一、如何使用注解MapperScan二、MapperScan各个属性介绍三、MapperScannerRegistrar一、如何使用注解MapperScan@MapperScan放在spring boot可以扫描到的位置即可,一个应用配置一个该注解,比如:@MapperScan(b.

2020-10-08 21:45:11

Seata解析-服务端集群部署

本文基于seata 1.3.0版本在AT模式下,服务端集群部署很简单,如果集群是在一台机器上,复制一份程序,修改一下端口号,启动即可。因为集群部署很简单,本文不再对部署做介绍,本文向介绍一下集群部署后,TM、RM如何与集群通讯,以及集群中各机器如何通讯。文章目录一、RM与集群通讯二、TM与集群通讯三、集群各机器间如何交互一、RM与集群通讯RM启动的时候要向TC注册,根据事务分组从注册中心找到该分组对应的服务集群,之后与集群中的每台机器建立连接,并向每台机器注册RM。与集群建立连接是在Nett.

2020-10-06 23:45:24

Seata解析-saga模式介绍

本文基于seata 1.3.0版本1987年普林斯顿大学的Hector Garcia-Molina和Kenneth Salem发表了一篇Paper Sagas的论文,讲述了saga模式如何处理长事务。关于saga的介绍请大家参见文章:分布式事务:Saga模式saga提供了两种实现方式,一种是编排,另一种是控制。seata的实现方式是后者。seata的控制器使用状态机驱动事务执行。...

2020-10-05 23:02:58

spring cloud-sleuth原理浅析

本文基于sleuth 2.2.5版本sleuth是一个链路追踪工具,通过它在日志中打印的信息可以分析出一个服务的调用链条,也可以得出链条中每个服务的耗时,这为我们在实际生产中,分析超时服务,分析服务调用关系,做服务治理提供帮助。第一次使用sleuth,虽说跟着网上的教程也可以运行出正确的结果,但是对于原理、更进一步的使用还是一头蒙。我就尝试着分析一下源代码,其代码量并不大,但是代码还真是难懂,看了一段时间源码,并从网上找了资料,只是对原理、部分类的作用有了一些了解,我通过本文做一下介绍。先说几个概.

2020-10-02 11:17:38

Seata解析-RM执行SQL语句原理详解

本文基于seata 1.3.0版本seata使用DataSourceProxy代理业务数据源,之后获取数据库连接都是通过代理数据源完成。本文将详细分析RM如何通过代理数据源完成一条SQL语句的执行。使用JDBC操作数据库的伪代码流程一般为:Connection conn=dataSource.getConnection();Statement state=conn.createStatement();state.execute(sql);或者Connection conn=dataSour.

2020-09-26 18:23:50

Seata解析-详解RM及TM的初始化过程

本文基于seata 1.3.0版本虽然RM和TM功能不相同,但是两者都部署在应用端,和应用程序部署在一起,RM和TM的初始化都是由同一位置触发的。本文将详细介绍RM和TM的初始化过程。本文目录一、GlobalTransactionScanner对象的创建1、自己编程创建一、GlobalTransactionScanner对象的创建RM、TM的初始化都是由类GlobalTransactionScanner触发的,那么先来介绍GlobalTransactionScanner对象是如何创建的。1、.

2020-09-25 09:47:20

Seata解析-数据源代理DataSourceProxy详解

本文基于seata 1.3.0版本前面通过十多篇文章详细介绍了TC端。从这篇文章开始介绍RM。RM是资源管理器,资源指的就是数据库,RM主要与分支事务有关。相对于TC和TM,RM是与业务数据库最近的。在《Seata解析-seata部署启动初体验》中,使用了类DataSourceProxy创建数据源代理。根据其使用场景可以知道,DataSourceProxy代理的其实就是业务数据库的数据源。因此RM的启动入口就是DataSourceProxy。下图是DataSourceProxy的继承结构:D.

2020-09-24 08:05:10

Seata解析-TC端file.conf文件各配置作用总结

本文主要介绍TC端的各个配置及其作用。本文将属性平铺了,这与file.conf中的属性格式不一致。transport.threadFactory.bossThreadSizetransport.threadFactory.workerThreadSizetransport.servertransport.heartbeattransport.threadFactory.workerThreadPrefixstore.moderansport.typetransport.enableClien

2020-09-20 15:13:20

Seata解析-DefaultCoordinator的四大定时线程池功能详解

本文基于seata 1.3.0版本在前面文章介绍的时候,可以看到代码有很多地方将全局事务添加到会话管理器中,比如需要提交的全局事务会添加到重试提交事务管理器,这里面就有一个问题,添加到管理器之后的处理流程是什么?本文就来详细介绍后面的流程。文章目录一、创建并启动线程池一、retryRollbacking二、asyncCommitting三、timeoutCheck四、undoLogDelete一、创建并启动线程池在DefaultCoordinator类中定义了五个ScheduledThreadP.

2020-09-17 22:06:13

Seata解析-TC端重要类及其之间的关系图

本文基于seata 1.3.0版本之前文章介绍了服务端的很多类,本文对这些类做个整理,算是对之前文章的一个总结。下图是TC端的重点类及其之间的关系。首先Server类是整个TC端的启动类,Server要去加载创建NettyRemotingServer、DefaultCoordinator、SessionManager。NettyRemotingServer用于启动Netty,并初始化Netty的责任链,这样可以接收外部请求,五大处理器就是在Netty的责任链中使用,Netty接收到请求后,根据.

2020-09-16 21:42:19

Seata解析-锁管理器LockManager详解

本文基于seata 1.3.0版本之前在介绍分支事务注册的时候需要对记录主键加锁,这里加锁使用便是LockManager的实现类FileLockManager。本文将详细介绍seata的锁管理器。文章目录一、LockManager二、AbstractLockManager三、FileLockManager1、FileLocker四、DataBaseLockManager五、RedisLockManager

2020-09-15 22:00:15

Seata解析-文件事务存储管理器FileTransactionStoreManager详解

本文基于seata 1.3.0版本本文将详解FileTransactionStoreManager,该类是由FileSessionManager创建并初始化,也是由FileSessionManager调度使用,作用是将对GlobalSession和BranchSession的所有操作都记录到日志文件中。FileTransactionStoreManager继承的类和实现的接口相对比较简单,本文不再介绍。本文从日志文件的结构说起,后面介绍源代码。文章目录一、文件结构二、FileTransactio.

2020-09-13 19:34:14

Seata解析-文件会话管理器FileSessionManager详解

本文基于seata 1.3.0版本在《Seata解析-TC会话管理器SessionManager》中介绍了SessionManager管理器有三个实现类:DataBaseSessionManager、FileSessionManager、RedisSessionManager,可以通过store.mode指定需要使用的管理器实现类,store.mode在file.conf文件中配置,有三个值:db、file、redis,分别对应了上面三个实现类。这三个管理器的区别在于事务日志的写入位置不用,比如Dat.

2020-09-12 21:21:44

Seata解析-TC会话管理器SessionManager

> 本文基于seata 1.3.0版本在介绍ServerOnRequestProcessor处理器时,多次提到了会话管理器,比如处理分支事务注册请求时,对记录加锁就是调用了根会话管理器,再如处理全局事务提交请求中,会将全局事务对象添加到异步提交管理器中,这个异步提交管理器就是会话管理器的一种,还有在分析代码的时候,多次看到往globalSession对象中添加监听器,其实这个监听器就是会话管理器。会话管理器在seata中的作用非常重要,本文就来详细介绍会话管理器。

2020-09-12 15:58:46

Seata解析-TC处理全局事务和分支事务原理详解之分支事务提交结果响应和分支事务回滚结果响应

本文基于seata 1.3.0版本在《Seata解析-TC处理全局事务和分支事务原理详解之全局事务提交请求和全局事务回滚请求》提到,TC会给各个分支事务发送消息通知分支事务提交(提交是在异步提交管理器中进行的)或者回滚,那这里就涉及到分支事务的响应问题,本文将分析分支事务的两个响应:分支事务提交结果响应和分支事务回滚结果响应。这两个响应都是由ServerOnResponseProcessor处理器处理的。下面看一下该类的process方法: public void process(ChannelH.

2020-09-11 22:34:19

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 原力探索 · S
    原力探索 · S
    在《原力计划【第二季】》打卡挑战活动中,发布 12 篇原创文章参与活动的博主,即可获得此勋章。(本次活动结束后统一统计发放)