renren-fast多数据源修改(跟源码)

先下时间做了一个python爬虫,准备使用人人开源项目,把数据管理起来,但是在使用自己的数据库,打开多数据源配置的时候,出现了问题,下面记录一下问题

以前也使用过@DS注解,配置过多数据源,但是renren-fast,又自己封装了一些,比如对数据SQL的监视,记录,启动时的切面等,而且application.yml里面的配置也是从dynamic开始读取的,可以在配置文件里面看到如下:

 我们需要在yml里面配置自己的数据源信息,在

启动的时候会加载config配置类,将配置信息放到里面,然后会在这里设置默认的数据库,renren-fast好像没有将primary放到配置里面,需要自己写一个方法,将设置的默认数据源信息放进去

 讲完配置,还有使用,就是在使用@DS注解,这个很简单,方法在调用之前会被@DS里面的拦截器拦截,获取里面的值,@DynamicDataSourceAnnotationInterceptor ,这是@DS注解的拦截类,调用注解的DS都会被拦截到这里,看源码可知


里面的invoke(MethodInvocation invocation)方法就是获取注解里面的信息,
会把信息放到DynamicDataSourceContextHolder.push()[动态数据源上下文持有者]中,就是你即将是用哪个数据源的key
然后再AbstractRoutingDataSource类中获取连接getConnection(),this.determineTargetDataSource().getConnection();在具体的determineTargetDataSource()方法中返回具体的数据库配置信息

在这个方法里面,renren-fast重写了determineCurrentLookupKey()方法,但是在自己定义的DynamicContextHolder类中,却没有把相关的数据源key放入其中,就会获取不到key值,使用默认的数据库


 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值