当前位置:网站首页 > 数据科学与大数据 > 正文

druiddatasource多数据源(datasource多数据源配置)



不要急于复制代码,先看清业务思路是否符合你要的,以下:

  1. Springboot项目
  2. 一个主数据源,数据库名称不变。
  3. 一个副数据源,数据库名称每天都在变,比如今天1号,是db_01; 明天2号,是db_02。
  1. 需要项目持续运行,不能切换数据源就重启项目。
  2. 副数据源在切换数据源时要考虑到还有sql在运行,切换数据源后要做防错。简而言之,就是要定时扫描一下之前的数据库是否存在没有操作完的数据做一下补救。
  3. 这部分根据实际项目而定,做好了这部分,实际上有关多数据源的事务一致性问题,你完全可以根据我上面的思路进行设计,而不是专注于一定要在代码层面实现多数据源操作的一致性,而是通过业务思路设计实现。
  4. 多数据源如何配置。

以前的写老项目程序员不知道怎么想的,一个月变一个数据库名称,一天变一个表。他是省事了,后期数据对接的人头大。

我项目的原始逻辑相当复杂,下面我们模拟一个业务需求来展开。

  1. 一个springboot项目,主数据源main_db,副数据源change_db_* ,没看错,它就是*。副数据源名称可变的。副数据源change_db_* 向主数据源main_db同步导入数据。
  2. 当调用接口1,我们查看主数据源main_db里的导入的数据;
  3. 当调用接口2,我们使用当前已连接的副数据源change_db_*插入数据;
  4. 当调用接口3,我们使用当前已连接的副数据源change_db_*向主数据源main_db里导入数据;
  5. 当调用接口4,我们切换副数据源change_db_为副数据源change_db_,当再调用接口3时数据源已经变了。
  6. 数据库如下:
    在这里插入图片描述
  1. 新建springboot项目通过idea或者官网生成springboot项目都可以,不再赘述。
    目录结构如下
    目录结构
  2. pom文件配置
 

3.yml文件配置

#数据库配置

 
 

4.2数据源1配置,注意主数据源使用 @Primary注解;使用@DependsOn注解解决循环依赖问题; sessionFactoryBean.setVfs(SpringBootVFS.class)这句代码解决加载springboot虚拟文件,防止jar包启动时找不到类;

 

4.3数据源2

 

4.4数据源2配置

 

5.SpringUtil工具类。实现ApplicationContextAware,在项目启动后使用ApplicationContext获取数据源bean。

 

6.核心方法:
调用接口时切换数据源。启动时副数据源是change_db_,调用接口后副数据源切换为change_db_。
我演示用的是写死的,实际使用中可以把根据时间变化的数据源放在数据库或者配置文件中,来获取。
重点:
许多博客都写错了。我们并不能使用.close()方法直接关闭数据源,然后使用.restart()重新加载数据源配置,因为此时数据源往往已经调用过.init()方法,.isInited()为true,此时使用.setXX会报错。
正确的使用:
先判断.isInited()是否为true,如果为true,则调用.restart()方法,此时.isInited()为false,我们调用.setXX可以修改数据源属性,然后再调用.init()方法重新加载数据源。

 

1.查看主数据源数据

 

此时为空。
在这里插入图片描述
2.向当前副数据源插入数据。

 

在这里插入图片描述
在这里插入图片描述
3.副数据库向主数据库插入数据

 

在这里插入图片描述
在这里插入图片描述
4.查看当前主数据源数据
在这里插入图片描述
在这里插入图片描述

5.调用接口切换副数据源change_db_→change_db_。

 
 

在这里插入图片描述
6.使用新副数据源插入数据。
在这里插入图片描述
在这里插入图片描
6.新副数据库向主数据库插入数据

在这里插入图片描述
在这里插入图片描述

7.查看此时主数据源数据
在这里插入图片描述

https://download.csdn.net/download/_/

到此这篇druiddatasource多数据源(datasource多数据源配置)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数据库增删改查sql语句(数据库增删改查语句大全)2025-05-14 13:00:04
  • spss数据分析如何做(spss数据分析如何做表格)2025-05-14 13:00:04
  • 短信恢复到本机(手机短信数据怎么恢复)2025-05-14 13:00:04
  • 数据库管理员培训机构(数据库管理员培训机构哪家好)2025-05-14 13:00:04
  • 单向链表数据结构(单向链表结构图)2025-05-14 13:00:04
  • sqlldr 导出数据(sqluldr2导出数据)2025-05-14 13:00:04
  • 数据中台设计方案怎么做(数据中台设计方案怎么做出来的)2025-05-14 13:00:04
  • 计算机大数据技术是学什么的(计算机大数据专业是什么)2025-05-14 13:00:04
  • sqlldr导入大量文件的数据(sqlldr导入多个文件)2025-05-14 13:00:04
  • 自动驾驶数据标注工作内容是什么(自动驾驶图片数据标注规范要求)2025-05-14 13:00:04
  • 全屏图片