一、多数据源架构设计说到多数据源,很多人第一反应是配置多个DataSource,然后根据业务场景手动选择。这种方式有两个问题:代码侵入性强,每个方法都要判断用哪个数据源事务管理混乱,Spring的@Transactional只能管理单个数据源更好的方案是使用Spring提供的AbstractRoutingDataSource,它像一个路由器,根据当前的上下文动态选择真实的数据源。1.1 整体架构多数据源整体架构图:上图展示了多数据源的核心架构,分为三层:应用层:业务代码通过自定义@DataSource注解声明使用哪个数据源,无需关心底层实现路由层:DynamicDataSource继承AbstractRoutingDataSource,实现动态路由DataSourceContextHolder基于ThreadLocal存储