# dynamic-mult-ds **Repository Path**: chanchaw/dynamic-mult-ds ## Basic Information - **Project Name**: dynamic-mult-ds - **Description**: 动态切换数据源 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-09 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 概述 制作动态切换数据源的过程 ## Process ### 手动添加切换数据源 请求接口 `http://localhost:8087/dmds/dynamic/testDataSource` 可以看到通过硬编码手动添加数据源切换数据源查询并拼接结果。由于 `DruidConfig` 是配置类,项目启动后会自动创建两个数据源 `current-account,pre-account`。在请求 `DynamicDataSourceController#switchDataSource` 时,项目已自动创建完成两个数据源,所以浏览器访问该 `API` 时,系统会自动切换数据源后查询数据拼接后返回给前端调用者。可以不必像方法 `DynamicDataSourceController#testDataSource` 一样先创建再切换。 目前的源码没有根据数据库配置表 `fabric_trading_account#account_set` 自动创建数据源,是读取配置文件 `application-ds.yml` 后自动创建数据源,所以工具类 `DataSourceUtil` 目前没有用,之后要实现根据配置表自动创建数据源时会用到其中的 `createDataSourceConnection` ### 自动添加数据源 账套数据库 `fabric_trading_account` 中的表 `account_set` 保存业务的账套数据库,即有当前年度的账套以及往年的账套数据库的 `key` 和名称,项目启动后首先创建 `fabric_trading_account` 的数据源,在读取业务账套数据库后动态创建数据源,在 `druid` [监控系统](http://localhost:8091/dmds/druid/login.html) 中可以看到,一个数据源一个标签页。 `druid` 监控系统要依赖数据源 `map` 对象,所以为配置类 `DruidMonitorConfig` 添加了注解 `@DependsOn` 。动态添加数据源的配置类 `AccountDataSource` 也使用了该注解。 ### session标记数据源 制作了 `api:accountSet/setDataSourceKey` 用于设置数据源,并在 `api:jcSimple/selectAll` 通过代码切换数据源后查询数据,之后要制作 `aop` 自动切换功能