大家好,我是课代表。欢迎来到我的公众号:Java课代表。上一篇介绍了数据源的基础知识,基于两套DataSource和两套mybatis配置实现了多数据源,从基础知识层面讲解了多数据源的实现思路。不知道的同学请戳→同学,你的多数据源交易无效!文末评论中提到,这种多数据源的方式对代码的侵入性很大,每个组件需要分两套写,不适合大规模的线上实践。对于多数据源的需求,Spring早在2007年就注意到并给出了解决方案。参见原文:dynamic-datasource-routingSpring提供了一个AbstractRoutingDataSource类来实现多DataSources的按需路由。本文介绍的是基于该方法的多数据源实践。1.什么是AbstractRoutingDataSource首先看一下类上的注释:抽象{@linkjavax.sql.DataSource}实现,它根据查找键将{@link#getConnection()}调用路由到各种目标DataSources之一。后者通常(但不一定)通过一些线程绑定的事务上下文来确定。类代表翻译:这是一个抽象类,可以通过查找键将对getConnection()方法的调用路由到目标数据源。后者(指查找键)通常由线程绑定的上下文决定。这段解说可谓字字珠玑,一句废话都没有。下面结合主要代码解释其含义。publicabstractclassAbstractRoutingDataSourceextendsAbstractDataSourceimplementsInitializingBean{//目标DataSourceMap,可以安装很多DataSource@NullableprivateMap