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源码阅读的主要内容,如果未能解决你的问题,请参考以下文章

阅读源码,要学会根据源码发现问题,提出问题,让问题反过来驱动阅读源码

Netty源码阅读计划——阅读环境搭建

问答形式阅读jQuery源码

Flink源码阅读(11)--- Flink Task重启时机

Tornado源码阅读(一) --- IOLoop之创建ioloop

下载和阅读Android源码