TSharding源码阅读
Posted 穿林度水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TSharding源码阅读相关的知识,希望对你有一定的参考价值。
1 读取解析数据库配置文件
DataSourceScanner实现了Spring的BeanDefinitionRegistryPostProcessor和ApplicationContextAware接口。
BeanDefinitionRegistryPostProcessor 允许定义bean
ApplicationContextAware 可以获取Spring上下文。
代码流程:getDataSources解析读取数据库配置文件,registerDataSources 生成DataSourceFactoryBean(名字格式trade0005SlaveDataSource)并注入到SpringBean工厂。继续遍历解析数据源,封装成Map<String, ReadWriteSplittingDataSource> ,如果有可写数据源则创建事务管理器(名字格式trade0005TransactionManager),注册到SpringBean工厂。如果可写数据源不存在,注册一个空transactionManager。如果只有一个可写数据源,则添加别名,兼容默认情况。解析完数据源后,向Spring注册dataSourceLookup,其实就是把数据源map保存起来。
2 MapperScannerWithSharding
Tsharding MybatisMapper的扫描类,负责将Mapper接口与对应的xml配置文件整合,绑定设定的数据源,注入到Spring Context中。
实现了BeanFactoryPostProcessor, InitializingBean 接口 。BeanFactoryPostProcessor可以修改BEAN的配置信息
代码流程:
获取1步中注册的dataSourceLookup。
initSqlSessionFactories。第一次SqlSessionFactoryBean.setMapperLocations.setDataSource.setTypeAliasesPackage(mapper位置,数据源,实体类),实例化SqlSessionFactoryBean,单例注册到bean工厂(名字格式为trade0001)。后续,从第一次的sessionFactoryBean.getObject()获取一个SqlSessionFactory
以上是关于TSharding源码阅读的主要内容,如果未能解决你的问题,请参考以下文章
阅读源码,要学会根据源码发现问题,提出问题,让问题反过来驱动阅读源码
Flink源码阅读(11)--- Flink Task重启时机