博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sharding-jdbc源码解析之spring集成
阅读量:6377 次
发布时间:2019-06-23

本文共 1109 字,大约阅读时间需要 3 分钟。

hot3.png

spring集成配置解析

本文转自“天河聊技术”微信公众号

 

找到spring的handler这个类

135512_zkvA_3775437.png

135549_VMyr_3775437.png

上图中是对sharding-jdbc的三个标签的解析,我们这次主要分析分片配置的解析,读写分离的配置解析也是一样的逻辑

我们看到上图中的init的方法第一行是对分片策略的解析,进入到初始化的这个类中

135626_THTF_3775437.png

进入到上图中的业务方法,根据传进来的xml节点对象,也就是strategy的xml节点对象进行下一步解析

135648_cqcU_3775437.png

我们跟踪上图的第一行代码的rootBeanDefinition方法进去发现这个方法

135705_sUFx_3775437.png

factoryMethodName这个属性值赋值为null,接着在进入到下个方法内

135728_6u4y_3775437.png

spring初始化bean有两种方法,一种是工厂方法模式、一种就是直接调用无参构造器进行初始化bean,上面我们看到是调用的StrategyConfig这个类的无参构造器初始化的bean,我们在返回到上级的这个方法

135800_tkUx_3775437.png

最后调用了bean构造器工厂对象的方法对StrategyConfig对象的参数进行赋值

我们在返回到上图的这行代码

135839_yYpd_3775437.png

对data-source节点进行解析,这个节点的下级节点比较多,所以解析的逻辑比较复杂,这也是我们今天配置解析的重点了,我们进入到这个类ShardingJdbcDataSourceBeanDefinitionParser的parseInternal方法,我们进入到这个方法

135919_rxB3_3775437.png

对SpringShardingDataSource这个对象进行初始化,我们看下怎么对这个对象进行初始化的

这个类的构造方法有两个参数

140341_RnnF_3775437.png

factory.addConstructorArgValue(parseShardingRuleConfig(element, parserContext));这行代码是对SpringShardingDataSource的构造方法赋值

我们进入到这个方法

140438_hgbR_3775437.png

我们进入上图的这个方法,主角终于出场了,我们进入这个方法

140640_I0nx_3775437.png

进入上图的方法

140559_2c7P_3775437.png

返回上一级进入到这个方法

140733_vXnl_3775437.png

140753_cuoD_3775437.png

返回上一级进入到这个方法

140824_Kd7t_3775437.png

最后这里是对属性的解析

18140848_KssY.jpg

配置解析第一部分完成了,内容比较多分两篇来写,我们总结下到现在配置解析封装成了几个对象

StrategyConfig对象

18140848_AgCk.jpg

ShardingRuleConfig分片规则配置对象

18140848_285q.jpg

TableRuleConfig表规则配置对象

18140848_vfz6.jpg

 

本次分享到这里结束了,不对的地方欢迎留言指正,以上内容仅供参考。

 

欢迎关注本人微信公众号“天河聊技术”,有更多javaWeb技术、架构、互金行业大数据相关的技术源码解析的文章。

转载于:https://my.oschina.net/u/3775437/blog/1641861

你可能感兴趣的文章
CentOS 6.3 上安装 Oracle 11g R2(转)
查看>>
js实现滚动新闻效果
查看>>
Nginx出现could not build the server_names_hash 解决办法
查看>>
Netbeans8在web项目中创建servlet
查看>>
Xmananger连接CentOS6.4
查看>>
ESXi upgrade 6.0 To 6.7
查看>>
高可用haproxy调度后端服务器实现动静分离集群架构
查看>>
一款分屏管理软件和一个虚拟桌面软件
查看>>
关于医院管理中书写的病志已提交删除问题
查看>>
SpringMVC处理器拦截器介绍及应用
查看>>
我的友情链接
查看>>
Python给文件上锁
查看>>
python操作Excel读写--使用xlrd
查看>>
也来开个博客,分享一下我掉过的坑!
查看>>
spark-submit
查看>>
Android Intent 序列化和反序列化
查看>>
八 手游开发神器 cocos2d-x editor 之动画和帧动画
查看>>
WordPress主题结构分析和图文解释
查看>>
Spark配置参数详解
查看>>
php-cgi进程终止导致502 Bad Gateway 的解决办法
查看>>