首先,想明白不同的接口想要使用不同的数据源。
那么自然想到了AOP,自定义注解。
通过自定义注解标注当前方法到底使用的是哪个数据源。
上面是前置条件。
看下若依是怎么处理的:
1.定义自定义注解,以及对应的多数据源的枚举类用来区分不同的数据源的值
2.注册多数据源的bean
3.继承jdbc的抽象类 AbstractRoutingDataSource,重写determineCurrentLookupKey()这个方法,同时自己写的抽象类构造方法覆盖父类的目标数据源,默认数据源
4.利用ThreadLocal存放当前线程使用的是哪个抽象类
全套流程:
1.通过自定义注解找到当前方法选择的是哪个数据源
2.将这个数据源的枚举值存入Threadlocal中
3.通过被重写的AbstractRoutingDataSource 的方法,从ThreadLocal中获取当前的数据源进行连接