在互联网的服务端开发的时候,我们很经常要在一个项目中去调用不同的数据库。在这种情况下,必然要涉及到多数据源问题。那么,我们该如何解决多数据源问题呢?有没有一种方法来动态切换数据源呢?答案是有的。万能的spring已经给了我们解决方案——利用
在互联网的服务端开发的时候,我们很经常要在一个项目中去调用不同的数据库。在这种情况下,必然要涉及到多数据源问题。那么,我们该如何解决多数据源问题呢?有没有一种方法来动态切换数据源呢?
答案是有的。万能的spring已经给了我们解决方案——利用AbstractRoutingDataSource。在 AbstractRoutingDataSource 类中,发现 getConnection() 方法,从名字上可以知道它是获得connection连接的。跟踪 getConnection() 方法, determineTargetDataSource() 就这么进入我们的视线,继续下去,我们发现了重点—— determineCurrentLookupKey() 。 determineCurrentLookupKey 方法是一个抽象方法,它的返回值就是我们要用到的数据源dataSource的key,然后根据这个key从 resolvedDataSources 这个map中取出dataSource,如果找不到就使用默认的dataSource。
知道了这些,我们就来用代码实现吧!以下的代码是基于Spring Boot,所以需要建立一个Spring Boot项目,然后引入spring-boot-starter-jdbc。项目中又有用到aop,肯定的,我们必须引入spring-boot-starter-aop。
接下来,我们需要建一个DynamicDataSource。
public class DynamicDataSourceextends AbstractRoutingDataSource{ @Override protectedObjectdetermineCurrentLookupKey(){ String dataSourceName = DynamicDataSourceContextHolder.getDataSourceName(); return dataSourceName; }}
--结束END--
本文标题: 浅谈利用Spring的AbstractRoutingDataSource解决多数据源的问题
本文链接: https://www.lsjlt.com/news/224270.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0