Sharding-Jdbc源码探究-读写分离
2019-08-26 06:16:21来源:博客园 阅读 ()
Sharding-Jdbc源码探究-读写分离
1. Sharding-Jdbc源码探究-读写分离
1.1. 主入口
找到源码入口
- 这一个类围绕了springboot配置属性的加载,加载了
spring.shardingsphere.datasource.names
配置的数据源,遍历存储到了Map容器 - 可以看到它还有个
@ConditionalOnProperty(prefix = "spring.shardingsphere", name = "enabled", havingValue = "true", matchIfMissing = true)
属性,说明只要引用了sharing-jdbc的pom,默认就会直接初始化加载 此类总共负责加载4个属性类
//分片属性配置
private final SpringBootShardingRuleConfigurationProperties shardingProperties;
//主从属性配置
private final SpringBootMasterSlaveRuleConfigurationProperties masterSlaveProperties;
//加密属性配置
private final SpringBootEncryptRuleConfigurationProperties encryptProperties;
//额外属性配置(比如sql是否打印)
private final SpringBootPropertiesConfigurationProperties propMapProperties;
经过该文件的查看,我们大概知道了配置属性是从哪里加载的和加载的过程
1.2. props
主从配置中主从的属性逗号理解,也好找到使用的地方,对props是在哪且如何使用的呢?
我找到了这个类:
是不是很熟悉sql.show
,没错这是官网例子中的sql显示配置,全称配置是spring.shardingsphere.props.sql.show = true
,说明了还有其它配置可以在这个类找到,比如最大线程数,最大请求连接数,是否简单sql等等,可以自己看看,一般都是用默认值
1.3. 数据源分离
- 主从环境的,具体选择哪个datasource呢?
选完数据源,之后就是在mybatis包里执行具体的解析查询过程
1.4. sql.show
这里就看看sql.shows
是如何发挥作用的,紧接着上述类,进入route方法
在route包中对是否打印这个sql做了判断,而参数的来源就是showSQL
,而这个参数什么时候填进来的呢?1.3的截图显示不完整整句的内容如下
masterSlaveRouter = new MasterSlaveRouter(connection.getMasterSlaveDataSource().getMasterSlaveRule(),
connection.getMasterSlaveDataSource().getShardingProperties().<Boolean>getValue(ShardingPropertiesConstant.SQL_SHOW));
明白了吧,在MasterSlaveRouter
类实例化的时候,通过ShardingPropertiesConstant.SQL_SHOW
注入进来了,而ShardingPropertiesConstant
这个类1.2的时候已经提到过了
原文链接:https://www.cnblogs.com/sky-chen/p/11388021.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 你说研究过Spring里面的源码,循环依赖你会么? 2020-06-09
- 通俗理解spring源码(六)—— 默认标签(import、alias、be 2020-06-07
- 学习源码的第八个月,我成了Spring的开源贡献者 2020-06-02
- java 在线网络考试系统源码 springboot mybaits vue.js 前后 2020-05-31
- 高吞吐量的分布式发布订阅消息系统Kafka之Producer源码分析 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash