概述
项目中整合多数据源时,一般是通过读取配置文件中的数据源信息创建数据源 放到AbstractRoutingDataSource的targetDataSources的map中, 然后通过AbstractRoutingDataSource获取实际需要的数据源。
当项目中需要整合的数据源特别多的时候,比如:8个、16个、32个数据库等, 这个时候配置文件就会变得比较臃肿,而且现在主流的是微服务架构, 可能一套服务有多个模块,如果是通过配置文件进行配置,那么需要 修改的配置文件相对较多,这种情况可以通过数据库进行配置数据源 或者是通过配置中心进行配置。
下面将演示通过数据库配置所有的数据源,服务只需要配置默认的数据源, 通过默认的数据源读取配置的多数据源,然后创建数据源实例,最后将 创建的数据源实例放在AbstractRoutingDataSource中。
环境说明
- spring boot
- mysql
- mybatis-plus
- spring-aop
- druid
- redis
项目目录结构
- controller: 存放接口类
- service: 存放服务类
- mapper: 存放操作数据库的mapper接口
- model: 存放数据库表实体类
- vo: 存放返回给前端的视图类
- context: 线程公共上下文
- config: 数据源配置信息
- annotation: 实现动态数据源加载自定义注解
- aop: 实现动态数据源设置切面类
- util: 工具类
- constants: 常量类
关键类说明
- SpringContextUtils: 获取手动获取Spring容器中的bean, 包含ApplicationContext属性

本文介绍了在大型微服务项目中如何管理大量数据源。通过数据库存储数据源配置,避免配置文件臃肿,利用SpringBoot、Druid和AOP实现动态数据源路由。设计了数据源配置表,并详细阐述了数据源的创建、缓存、AOP切面以及动态设置数据源key的两种方式,包括注解和参数传递。整个流程确保了服务的灵活性和高可用性。
最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



