首先,想明白不同的接口想要使用不同的数据源。

那么自然想到了AOP,自定义注解。

通过自定义注解标注当前方法到底使用的是哪个数据源。

上面是前置条件。

看下若依是怎么处理的:

1.定义自定义注解,以及对应的多数据源的枚举类用来区分不同的数据源的值

2.注册多数据源的bean

3.继承jdbc的抽象类 AbstractRoutingDataSource,重写determineCurrentLookupKey()这个方法,同时自己写的抽象类构造方法覆盖父类的目标数据源,默认数据源

 

4.利用ThreadLocal存放当前线程使用的是哪个抽象类

全套流程:

1.通过自定义注解找到当前方法选择的是哪个数据源

2.将这个数据源的枚举值存入Threadlocal中

3.通过被重写的AbstractRoutingDataSource  的方法,从ThreadLocal中获取当前的数据源进行连接

Logo

快速构建 Web 应用程序

更多推荐