由于项目中需要用到多个数据库,以前的做法都是在库里面做database link,或者写接口调用,用起来非常不方便,看到网上很多资料,决定跟着配置一番。
首先,看到的是这篇文章
点击打开链接
还有就是
点击打开链接
两篇文章写得非常好,写得非常详细,首先得有一个类用来切换数据库,由ThreadLocal作为数据源的设置与获取,然后又写一个类来继承AbstractRoutingDataSource重写
determineCurrentLookupKey方法,目的是为了标识当前的数据源,让spring切换到这个数据源上。
接着就可以配置多个数据源了。关键是要给之前写的那个类配置bean,指定lookupKey和与之对应的数据源,再来一个默认的数据源。
这样下来就可以切换数据源了。但是还不够方便,不够直观。
第二篇文章就有说到了,可以在方法或类上面以注解的方式进行切换,而且顺便做了标记,一目了然。
所以先自定义一个注解,文章里面是用String型的,而我是用枚举型的,更加清楚直观。
接着重头戏来了,就是采用aop切面拦截所有的注解(前面定义的),提取数据源标识,然后进行数据源的切换,这个地方目前还不太明白。。。
最后在spring配置文件配置拦截规则,我的是拦截service下的所有类、所有方法
这一块还是得再琢磨琢磨……