springmvc切换数据源问题

u010717881 2020-09-27 07:14:33
背景:
有2个结构一模一样的数据库。当用户点击A按钮后,页面重新刷新,所有数据都来自A

切到A数据库源。点击B按钮,切换到B数据源,页面重新刷新,所有数据都来自B


目前用AbstractRoutingDataSource,切换数据源,但是点击切换后有时又会自动使用默认数据源。
还望各位大佬指点一二。谢谢!
...全文
2809 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepSayingNo 2020-09-28
  • 打赏
  • 举报
回复
你的动态数据源的代码是怎么写的:DynamicDataSource extends AbstractRoutingDataSource 所有的数据源可以放到这里面:private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
亦夜 2020-09-28
  • 打赏
  • 举报
回复
引用 2 楼 u010717881 的回复:
[quote=引用 1 楼 亦夜 的回复:]https://blog.csdn.net/qq_37502106/article/details/91044952 点击切换数据源如果不点击呢,用的就是默认数据源,你可以重写AbstractRoutingDataSource配置你的默认数据源应该就没问题了
目前用的就是连接中的方法,我想要的是,如过当用户点击切换数据源B后,后面我所有的操作,都是来自B数据库的。 [/quote] 你现在的问题就是当你点击切换成B数据源,但是你在操作的时候可能会被切换成默认数据源,问题就是你切换的状态你在点击的时候传达了,你需要的是点击之后这个状态是应该一直被保存的
dkwuxiang 2020-09-28
  • 打赏
  • 举报
回复
public static void setDataSource(String dataSource) { CONTEXT_HOLDER.set(dataSource); } public static String getDataSource() { return CONTEXT_HOLDER.get(); } context_holder 不用 threadLocal 换成公共缓存(redis,数据库等等),因该能实现
u010717881 2020-09-28
  • 打赏
  • 举报
回复
引用 1 楼 亦夜 的回复:
https://blog.csdn.net/qq_37502106/article/details/91044952 点击切换数据源如果不点击呢,用的就是默认数据源,你可以重写AbstractRoutingDataSource配置你的默认数据源应该就没问题了
目前用的就是连接中的方法,我想要的是,如过当用户点击切换数据源B后,后面我所有的操作,都是来自B数据库的。
亦夜 2020-09-27
  • 打赏
  • 举报
回复
https://blog.csdn.net/qq_37502106/article/details/91044952 点击切换数据源如果不点击呢,用的就是默认数据源,你可以重写AbstractRoutingDataSource配置你的默认数据源应该就没问题了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧