借用连接1-怎么从目标数据源借用连接
二、借用连接--AbstractRoutingDataSource类(抽象路由数据源) 目的:基于look up data,然后从目标数据源借用连接 注look up key确定走主 or 从数据库连接池 代码开发: 1.定义子类继承AbstractRoutingDataSource,并覆写determineCurrentLookupKey方法,方法引入ThreadLocalUtils.get()后,就可得到当前请求走master or slave 2.DataSource dataSource = this.resolvedDataSources.get(master or slave);----targetDataSources-->类中的set方法给其赋值,入参是map-->池子已经随项目启动,所以需要新建类也随项目启动,再给这个方法赋值 targetDataSources结果是{master=137主库连接池对象,slave=136从库连接池对象} 需要在datasourceconfig类中增加方法,给targetDataSources这个类赋值,让随着项目启动 myRoutingDataSource+@Qualifier targetDataSources结果{"master"=masterDataSource,"slave"=slaveDataSource}
3.连接和数据源引入SqlSessionFactoryBean类+SqlSessionFactory类-->得到连接数据库连接,MybatisSqlSession类 4.@MapperScan让UserMapper先随项目启动+UserService服务层代码开发+controller层代码开发 5.启动项目(前提是先启动redis和数据库)+jmeter测试接口 源码类: @Qualifier 标记在属性或者方法入参上,导入对象 @MapperScan 标记在项目的启动类上,变量value+basePackages都是写mapper文件的包路径
AbstractRoutingDataSource源码类
使用方法getConnection()
这个方法的返回值是determineTargetDataSource()(确认目标数据源)的获取链接
怎么去获取连接就在这个determineTargetDataSource方法里,得到数据源DataSource
调用
determineCurrentLookupKey()
方法来确定当前的查找键(lookup key)。这个键用于在数据源中查找对应的目标数据源。