spring多数据源动态切换问题

一个总公司托管了N个子公司,每个子公司对应自己的数据库,我的程序实现每个子公司根据用户名登录的时候,只访问自己的数据库,而且公司的数目还在增加,这就涉及到了动态切换多数据源的问题!,还涉及到多个用户登录的时候的并发问题!图片说明急求解决,谢谢!

0

2个回答

目前很多项目中只能配置单个数据源,那么如果有多个数据源肿么办?Spring提供了一个抽象类AbstractRoutingDataSource,为我们很方便的解决了这个问题。
1.写一个DynamicDataSource类继承AbstractRoutingDataSource,并实现determineCurrentLookupKey方法
public class DynamicDataSou......
答案就在这里:Spring多数据源的动态切换
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

0
hpz981933231
Stayering 看那个图,如果我动态添加了公司D,XML配置文件没有,但是我总数据库有这这些信息,该怎么做?
3 年多之前 回复

用spring aop去做切换数据源的问题,并发的话是登陆时候并发吗,还是什么,公司有那么多员工吗,还能造成并发,你查看一下代码吧,如果有并发的话使用锁机制,要不就加上缓存

0
u014763172
猜个 回复hpz981933231: 没问题的,你可以具体试一下,不会那么多人同时并发请求的
3 年多之前 回复
hpz981933231
Stayering 不同的公司登录,会不会产生竞争?就是这个并发问题!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
spring动态创建切换多数据源问题分析与解决办法
Spring 在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。我们以往在spring和hibernate框架中总是配置一个数据源,因而sessionFactory的dataSource属性总是指向这个数据源并且恒定不变,所有DAO在使用sessionFactory的时候都是通过这个数据源访问数据库。但是现在,由于项目的需要,我
【SpringBoot2.0系列06】SpringBoot之多数据源动态切换数据源
【SpringBoot2.0系列01】初识SpringBoot 【SpringBoot2.0系列02】SpringBoot之使用Thymeleaf视图模板 【SpringBoot2.0系列03】SpringBoot之使用freemark视图模板 【SpringBoot2.0系列04】SpringBoot之使用JPA完成简单的rest api 【SpringBoot2.0系列05】Sprin...
Spring 配置多个数据源,并实现动态切换
1.配置两个不同的数据源,如下(由于项目使用的是druid数据库连接,配置可以会复杂点比较):   <!-- 数据源配置1 --> <bean id="testDataSource1" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"...
使用spring 实现真正多数据源的动态加载及动态切换
内容提示:数据的统计分析操作,项目是以spring为基础框架搭建的.收集现在网上的所有关于多数据源配置的方式,并没有自己十分满意的,例如我有N个数据源,按照现网可以搜索到的配置方式,都是在spring配置文件中配置N个datasource,并通过实现AbstractRoutingDataSource抽象类的子类进行多... 1 前言:   公司需要做一个分析统计系统,该系统需要连接N台服务器结
基于spring的aop实现多数据源动态切换
 一、动态切换数据源理论知识  项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此;又例如:读写分离数据库配置的系统。 1、相信很多人都知道JDK代理,分静态代理和动态代理两种,同样的,多数据源设置也分为类似的两种: 1)静态数据源切换: 一般情况下,我们可以配置多个数据源,然后为每个数据源写一套对应的sessionFactory和dao层,我们称之为静态数...
Spring实现多数据源配置以及切换,并解决加入事务控制出现切换失败的问题
1.多数据源的配置:     应用场景:(1)数据作读写分离,配置读库和写库。(2) 同步其他数据源数据库数据到项目默认的数据库对应表中,例如通过定时任务同步更新和修改操作 这里主要介绍的是通过Spring AOP,加上注解的方式,在进行Service方法的访问前,先通过前置通知Before,执行数据源切换操作,然后再执行dao层代码,进行数据库的相关操作。  一.xml相关配置操作: ...
Spring Boot 多数据源动态切换开启事务后,数据源切换失败
在项目中遇到需要使用多数据源的情况,解决办法是,使用注解,切面拦截来注入不同的dataSource。实现代码在底部。基本思路:在dao的方法前加上@TargetDataSource(ORDER_DATA_SOURCE)注解来表明使用的哪个数据源。问题:事务开启一般是在service中开启,事务开启后会导致数据源切换失败,数据源切换需要在事务开启前执行。解决:数据源切入点@Pointcut增加ser...
spring boot 多数据源切换aop---------------真的很方面
Boot版本 2.0   此处 @EnableTransactionManagement(order = 2) 需要打个问号,文章结尾会解释 application.yml   /** * 多数据源连接池配置 */ @Bean public DynamicDataSource mutiDataSource(DruidProperties druidProperties...
Spring Boot 动态切换数据源二——负载均衡
如果仅仅是master-slave模式可以参考我前边的文章Spring Boot HikariCP集成多数据源。 这篇文章也是在那个基础上修改的,上篇文章中的多数据源是有限制的,哪条sql使用哪个数据库必须在代码中写死。现在针对这点做优化,真正的集成多个数据源,且实现简单的负载均衡。 相关主要代码 先看配置文件 slave: hosts: slave1,slave2 hikar...
SpringBoot多数据源切换,AOP实现动态数据源切换
SpringBoot多数据源切换,AOP实现动态数据源切换 操作数据一般都是在DAO层进行处理,可以选择直接使用JDBC进行编程 或者是使用多个DataSource 然后创建多个SessionFactory,在使用Dao层的时候通过不同的SessionFactory进行处理,不过这样的入侵性比较明显,一般的情况下我们都是使用继承HibernateSupportDao进行封装了的处理,如果多个Se...
dataBaseExchange.zip
spring 多数据源 多数据源切换 注解方法切换数据源 多数据源动态切换 DruidDataSource
spring 动态切换数据源 多数据库
1.背景 对于数据量在1千万,单个mysql数据库就可以支持,但是如果数据量大于这个数的时候,例如1亿,那么查询的性能就会很低。此时需要对数据库做水平切分,常见的做法是按照用户的账号进行hash,然后选择对应的数据库。 水平切分图,数据落入不同的库中 2.实现2.1示意图先来看下大致示意图: - 图1是比较常见的情况,单个数据库 - 图2展示了web应用和数据库之间的一个中间层,这个中间层去
Spring动态切换多数据源解决方案
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据。        Spring2.x以后的版本中采用Proxy模式,就是我们在方案中实现一个虚拟的数据源,并且用它来
Spring Boot学习(二):mybatis + druid + 多数据源自动切换
目录 一、简介 二、环境准备 三、代码改造 四、注意事项 五、参考资料 一、简介 闲言碎语不多说:项目中要用到多数据源分别管理数据,主数据源存储正式数据,从数据源存储预加载的数据并完成预校验。 二、环境准备 eclipse + maven + Spring Boot + mybatis + oracle 三、代码改造 pom.xml文件中添加依赖 <!--al...
Spring Boot +Mybatis+druid动态多数据源自由切换
Spring Boot +Mybatis+druid动态多数据源自由切换实现数据源动态切换,希望能帮到需要的人
Spring动态切换多数据源Demo
Spring动态切换多数据源Demo
spring boot 多数据源动态切换
总体思路 使用AOP进行数据源切换,继承AbstractRoutingDataSource实现数据源动态的获取,使用注解指定数据源。 //指定aop事务执行顺序,已保证在切换数据源的后面 @EnableTransactionManagement(order = 2) //排除数据源自动配置 @SpringBootApplication(exclude = { DataSou...
Spring AOP从入门到放弃之多数据源读写动态切换
项目中如果需要由多个数据源,比如3个,一个主两个从。主库主要是写操作,两个从库做读操作。 那么在spring boot中怎么使用AOP判断程序是读还是写,并且分配到不同的数据源中呢?本文重要是 的代码是使用 spring boot 、druid、mybatis、mybatis plus等技术做支持的。逻辑步骤大概的逻辑为, 1、引入durid 2、配置三个数据源,1个写,2个读,两个从库实现简
spring mybatis 多数据源动态切换
spring mybatis 多数据源动态切换
spring配置多数据源涉及事务无法切换解决方案(绝对有效)
最近在做的项目需要操作两个数据源,并且是一个service需要同时调用两个数据源,刚开始按照网上说的配置通过切面操作AbstractRoutingDataSource这个类,发现单独去调用每一个数据源可以灵活切换,后来涉及事务一个service调用两个数据源就发现动态数据源无法切换了,琢磨了很久,终于找到原因。 问题根源: spring涉及事务的代码调用顺序: service注解上@tran...
spring框架多数据源切换问题的解决
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据。 Spring配置多数据源的方式和具体使用过程。  Spring对于多数据源,以数据库表为参照,大体上可以分成两
SpringBoot学习---第五篇:动态数据源(多数据源自动切换)
目录 一、应用场景 二、准备工作 2.1  创建数据表 2.2 添加依赖 2.3 生成 bean、dao、mapper 三、动态数据源 3.1 配置文件 application.properties 3.2 动态数据源核心代码 3.3 启动类添加注解 四、使用方法 4.1 Controller 4.2 Service 五、测试 六、Springboot2.0动态多数据源...
Spring Boot MyBatis 动态数据源切换、多数据源,读写分离
项目地址:https://github.com/helloworlde/SpringBoot-DynamicDataSource/tree/dev 在 Spring Boot 应用中使用到了 MyBatis 作为持久层框架,添加多个数据源,实现读写分离,减少数据库的压力 在这个项目中使用注解方式声明要使用的数据源,通过 AOP 查找注解,从而实现数据源的动态切换;该项目为 Product
spring框架---动态切换多数据源
项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此。spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据。        Spring2.x
深入AbstractRoutingDataSource源码,分析多数据源切换原理
本文的源码分析是基于上一篇文章多数据源切换https://blog.csdn.net/u013034378/article/details/81455513,本文说的方法一,方法二,指的就是上一篇文章里的两种切换数据源的方法。 1.AbstractRoutingDataSource实现InitializingBean接口,实现了afterPropertiesSet方法。afterProperti...
spring框架中多数据源创建加载并且实现动态切换的配置实例代码
spring框架中多数据源创建加载并且实现动态切换的配置实例代码,代码下载地址:http://www.zuidaima.com/share/1774074130205696.htm
Spring 配置多个数据源,并实现动态切换
1.配置两个不同的数据源,如下(由于项目使用的是druid数据库连接,配置可以会复杂点比较):
springboot+mybatis多数据源配置,AOP注解动态切换数据源
应用场景:项目使用多数据源,并实现读写分离。springboot默认加载application.properties或application.yml配置,配置规则已经定好且为单数据源,想要配置多数据源必须禁用默认加载,然后手动去配置多数据源,完整代码如下:数据源配置:application.properties#springboot单据源配置 spring.datasource.url=jdbc:...
Spring-Boot 多数据源配置+动态数据源切换+多数据源事物配置实现主从数据库存储分离
网上关于动态数据源配置的博文一搜一大堆,都是拿来主义,往往把需要的人弄得不是太明白,也没有个具体的好用的简单的demo例子供人参考,本篇,我也是拿来主义,,我拿来核心的core,进行demo案列整理,我只挑重要的部分讲,demo会在最后提供GitHub下载(博主 2018年3月16日14:26:47 注: 这种多数据源的动态切换确实可以解决数据的主从分库操作,但是却有一个致命的BUG,那就是事务不...
spring+hibernate多数据源切换
由于公司需求,需要在项目中动态切换数据源。 废话少说,贴配置以及代码 spring配置文件: <!-- 读取数据库配置信息 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locat...
Spring项目中使用两种方法动态切换数据源,多数据源切换
本文介绍两种切换数据库的方法。 方法1:数据库信息都配置在spring xml中,适用于一般数据库切换。执行完某操作,切换数据库,执行另一个操作。 方法2:将数据库信息配置在默认数据源中,适用于切换数据库操作同一方法,相当于批量执行方法。...
spring配置多数据源,threadLocal切换数据源
1.新建类MultiDataSource,集成AbstractRoutingDataSource,重写determineCurrentLookupKey()方法。 2.spring中配置数据源信息,将所有的数据源配置成一个map 3.使用ThreadLocal来写一个工具类,ThreadLocal用来存放线程的变量,每个线程都存成一个副本
Spring-boot+mybatis多数据源整合(动态切换数据源)
Spring-boot+mybatis多数据源整合(动态切换数据源),亲测可用
spring多数据源+事物管理(数据源切换时间需要在事物起作用之前)
1、使用了spring的aop思想,实现了动态数据源的切换。 2、spring的事务管理,是基于数据源的,所以如果要实现动态数据源切换,而且在同一个数据源中保证事务是起作用的话,就需要注意二者的顺序问题,即:在事物起作用之前就要把数据源切换回来。          举一个例子:web开发常见是三层结构:controller、service、dao。一般事务都会在service层加的,如果使用s...
springboot使用mybatis多数据源动态切换的实现
需求:项目使用了读写分离,或者数据进行了分库处理,我们希望在操作不同的数据库的时候,我们的程序能够动态的切换到相应的数据库,执行相关的操作。 首先,你需要一个能够正常运行的springboot项目,配置mybatis并且能够正常的操作数据库(增删查改) 现在开始实现: 思路:现在项目的结构设计基本上是基于MVC的,那么数据库的操作集中在dao层完成,主要业务逻辑在service层处理,c...
springboot springjpa 从数据库动态加载多数据源 并随意切换
背景:项目本来就是springboot+springJpa的框架,连接池用的德鲁伊DruidDataSource。 想要在数据库配置多数据源,用户可以随便新增数据源,根据请求带的不同参数,controller层随意切换数据源,这样就可以同一套部署的代码,操作不同的数据库,有点 SaaS的味道,不过是各自独立的库。 1.配置默认数据源 2.启动之后加载数据库的数据源 并且加载到bean交给sp...
Spring boot +jpa环境下,多数据源处理,并且在control进行切换数据源
背景:在以往的项目中,存在这样的一个需求:没有实体(entity、pojo)的情况下,进行表的操作,比如查询某某表数据;以往的处理方式,只需要数据源的切换即可;现在的spring boot +jpa项目中,遇到一个问题:项目中大多数采用的是分包的方式进行数据源的注入(扫包方式),对于没有实体的数据源,便无法进行curd操作,原因是切换数据源失败;为了解决这个切换数据的问题,我们研究了网上不少案例,...
springboot+mybatis解决多数据源切换事务控制不生效的问题
网上好多的springboot的事务都是瞎扯,根本不起作用,后来通过各种渠道查证,springboot的生命式事务需要重写Transaction。追溯源代码:        查看源代码中DataSourceTransactionManager这个类       当我们配置了事物管理器和拦截Service中的方法后,每次执行Service中方法前会开启一个事务,并且同时会缓存一些东西:DataSou...
Springboot项目实现多数据源动态切换(Postgresql和Mysql切换)
概述 1. 需求: 多数据源切换的情况,大多数是主、从数据库切换,而主从数据库多数情况下都是同种类的数据库。但是,实际工作中,也有可能需要多种类的数据库之间的切换。本文便是实现多种类数据库的切换。 2. 实际场景: 例如,本人实际工作中,需要将原有的postgresql(简称pg)数据库中的数据读取出来,根据某些特定规则,进行展示,但是该pg数据库,不在公司,不允许修改。而且就是展示数据,...
spring+mybatis 多数据源切换失败的可能原因。
spring+mybatis 多数据源切换失败的可能原因。 可能因为,加了事务。 // @Transactional(readOnly = false) // 需要事务操作必须加入此注解 就因为加了事务,导致了,问题的出现。 害得我把spring的框架都改写了,不过由于过于暴力,所以没写。 重新折回去看看了代码。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题