CN111708518A - 一种数据源切换方法、装置、存储介质和设备 - Google Patents
一种数据源切换方法、装置、存储介质和设备 Download PDFInfo
- Publication number
- CN111708518A CN111708518A CN202010533543.5A CN202010533543A CN111708518A CN 111708518 A CN111708518 A CN 111708518A CN 202010533543 A CN202010533543 A CN 202010533543A CN 111708518 A CN111708518 A CN 111708518A
- Authority
- CN
- China
- Prior art keywords
- data source
- switching
- module
- target data
- configuration file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- WBEJYOJJBDISQU-UHFFFAOYSA-N 1,2-Dibromo-3-chloropropane Chemical compound ClCC(Br)CBr WBEJYOJJBDISQU-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据源切换方法,基于Spring和Mybatis框架,包括获取配置文件,所述配置文件中包括数据源池;根据所述配置文件,初始化事物管理器、执行器模块和切换路由器模块;其中,所述事物管理器基于Spring自带的事物管理器,所述执行器模块基于Mybatis执行器,所述切换路由器模块基于Sping实现,用于切换目标数据源;基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换。本发明无需程序员手工切换数据源,提升了开发效率。本发明还涉及一种数据源切换装置、存储介质和设备。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据源切换方法、装置、存储介质和设备。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库。数据库有多种类型,例如,简单存储有各种数据表格的数据库或存储海量数据的大型数据库***。面向对象时,由于数据库在不同的环境下(如开发环境或测试环境),需要不同的数据源对其进行访问,因此,工作人员在切换数据库的环境时,需要对数据源进行切换。
目前,基于Spring和Mybatis框架中可能会使用到多数据源的场景很多,但是受到技术的限制,目前通常由程序员手工配置进行数据源的切换,导致在使用过程中代码量大,开发效率低,对开发人员极不友好。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种数据源切换方法、装置、存储介质和设备。
本发明解决上述技术问题的技术方案如下:
一种数据源切换方法,基于Spring和Mybatis框架,包括:
获取配置文件,所述配置文件中包括数据源池;
根据所述配置文件,初始化事物管理器、执行器模块和切换路由器模块;
其中,所述事物管理器基于Spring自带的事物管理器,所述执行器模块基于Mybatis执行器,所述切换路由器模块基于Sping实现,用于切换目标数据源;
基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换。
本发明的有益效果是:提供一种数据源切换方法,通过获取配置文件,配置文件中配置数据源池,并根据配置文件,初始化事物管理器、切换路由器模块和执行器模块,基于事物管理器、执行器模块和切换路由器模块,完成目标数据源的切换的过程,无需程序员手工切换数据源,提升了开发效率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,所述基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换,具体包括以下步骤:
所述事物管理器获取所述目标数据源的注解标识;
所述执行器模块对所述目标数据源的注解标识解析,并将所述目标源数据源的注解标识的解析结果与所述数据源池中的数据源进行匹配;
若匹配成功,则通过所述切换路由器模块进行所述目标数据源的切换。
采用上述进一步方案的有益效果是:事物管理器获取目标数据源的注解标识,执行器模块对目标数据源的注解标识进行解析,并根据解析结果与数据源池进行匹配,若匹配成功,切换路由器模块完成数据源的切换,实现了目标数据源自动切换,无需程序员手工切换数据源。
进一步地,所述事物管理器获取所述目标数据源的注解标识,具体包括以下步骤:
从Spring容器中获取Sql会话工厂SqlSessionFactory,并通过所述SqlSessionFactory得到所述目标数据源;
根据所述目标数据源,得到所述目标数据源的注解标识。
采用上述进一步方案的有益效果是:通过从Spring容器中获取SqlSessionFactory,得到目标数据源信息,并基于数据源信息得到数据源标识的注解,进行数据源切换方便、灵活,无需对***进行重构。
进一步地,所述通过所述切换路由器模块进行所述目标数据源的切换,具体包括:
所述切换路由器模块基于Spring容器的AbstractDataSource类,进行所述目标数据源的切换。
采用上述进一步方案的有益效果是:基于Spring的AbstractDataSource类,进行所述目标数据源的切换方法方便移植,无需***架构进行调整。
本发明解决上述技术问题的另一种技术方案如下:
一种数据源切换装置,所述数据源切换装置包括配置文件处理模块、初始化模块和数据源切换模块;
配置文件处理模块,用于获取配置文件,所述配置文件中包括数据源池;
所述初始化模块,用于根据所述配置文件,初始化事物管理器、执行器模块和切换路由器模块;
其中,所述事物管理器基于Spring自带的事物管理器,所述执行器模块基于Mybatis执行器,所述切换路由器模块基于Sping实现,用于切换目标数据源;
所述数据源切换模块,用于基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换。
本发明的有益效果是:提供一种数据源切换装置,通过获取配置文件,配置文件中配置数据源池,并根据配置文件,初始化事物管理器、切换路由器模块和执行器模块,基于事物管理器、执行器模块和切换路由器模块,完成目标数据源的切换的过程,无需程序员手工切换数据源,提升了开发效率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,所述数据源切换模块,具体用于通过所述事物管理器获取所述目标数据源的注解标识;
通过所述执行器模块对所述目标数据源的注解标识解析,并将所述目标源数据源的注解标识的解析结果与所述数据源池中的数据源进行匹配;
若匹配成功,则通过所述切换路由器模块进行所述目标数据源的切换。
进一步地,所述数据源切换模块,具体用于通过所述事物管理器从Spring容器中获取Sql会话工厂SqlSessionFactory,并通过所述SqlSessionFactory得到所述目标数据源;
根据所述目标数据源,得到所述目标数据源的注解标识。
进一步地,所述数据源切换模块,具体用于所述切换路由器模块基于Spring容器的AbstractDataSource类,进行所述目标数据源的切换。
此外,本发明还提供一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如上述技术方案中任一项所述的数据源切换方法的步骤。
本发明还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上的并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述技术方案中任一项所述的数据源切换方法的步骤。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据源切换方法的示意性流程图;
图2为本发明另一实施例提供的一种数据源切换装置的示意性模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图1本发明提供的一种数据源切换方法的示意性流程图所示,数据源切换方法包括以下步骤:
110、获取配置文件,所述配置文件中包括数据源池。
应理解,配置文件具体包括根据不同的数据库,配置与所述数据库对应的数据源池,其中,所有数据源池共享同一个SqlSessionFactory。
120、根据配置文件,初始化事物管理器、执行器模块和切换路由器模块;其中,事物管理器基于Spring自带的事物管理器,执行器模块基于Mybatis执行器,切换路由器模块基于Sping实现,用于切换目标数据源。
应理解,本实施例中是在事物管理器、切换路由器模块、执行器模块已经创建成功的前提下再进行初始化。
配置文件中包括配置数据源池,每一个数据源可使用spring自带的DriverManagerDataSource。或通过数据源实现类DriverManagerDataSource实现,或是通过DBCP或是C3P0这两者中任何一个实现数据源的配置。
130、基于事物管理器、执行器模块和切换路由器模块,完成目标数据源的切换。
应理解,事务管理器主要职责是在针对Spring所提供的事务管理器进行功能扩展,事物管理器具备数据源预约标识获取、数据源匹配和数据源初始化等流程的处理;切换路由器模块主要职责是完成数据源切换动作,该流程主要针对Spring中的AbstractDataSource进行实现,Spring本身是没有提供实现。Spring仅仅定义了接口规范;执行器模块主要工作职责是对业务DataSource注解标识进行解析,并按照对应DataSource标识与多数据源资源池进行匹配,并完成数据源切换。整合过程采用对mybatis执行器的功能扩展方式进行数据源预约标识获取、数据源匹配、数据源初始化等流程。
基于上述实施例通过事务管理器、切换路由器模块和执行器模块,完成目标数据源的自动切换,无需程序员手工切换数据源,提升了开发效率。
基于上述实施例,进一步地,事物管理器获取目标数据源的注解标识;
执行器模块对目标数据源的注解标识解析,并将目标源数据源的注解标识的解析结果与数据源池中的数据源进行匹配;
若匹配成功,则通过切换路由器模块进行目标数据源的切换。
执行器通过BatchExecutorOur、ReuseEcecutorOur、SimpleExecutorOur和CachingExecutorour方法实现对目标数据源注解标识的解析和与数据源池的匹配。切换路由器模块通过DataSourceRouter、DataSourceHolder和DbConvertUtil方法实现对数据源的切换。
进一步地,事物管理器从Spring容器中获取Sql会话工厂SqlSessionFactory,并通过SqlSessionFactory得到目标数据源;
根据目标数据源,得到目标数据源的注解标识。
进一步地,切换路由器模块基于Spring容器的AbstractDataSource类,进行目标数据源的切换。
如图2本发明提供的一种数据源切换装置的示意性模块图所示,一种数据源切换装置包括配置文件处理模块、初始化模块和数据源切换模块;
配置文件处理模块,用于获取配置文件,所述配置文件中包括数据源池;
所述初始化模块,用于根据所述配置文件,初始化事物管理器、执行器模块和切换路由器模块;
其中,所述事物管理器基于Spring自带的事物管理器,所述执行器模块基于Mybatis执行器,所述切换路由器模块基于Sping实现,用于切换目标数据源;
所述数据源切换模块,用于基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换。
进一步地,所述数据源切换模块,具体用于通过所述事物管理器获取所述目标数据源的注解标识;
通过所述执行器模块对所述目标数据源的注解标识解析,并将所述目标源数据源的注解标识的解析结果与所述数据源池中的数据源进行匹配;
若匹配成功,则通过所述切换路由器模块进行所述目标数据源的切换。
进一步地,所述数据源切换模块,具体用于通过所述事物管理器从Spring容器中获取Sql会话工厂SqlSessionFactory,并通过所述SqlSessionFactory得到所述目标数据源;
根据所述目标数据源,得到所述目标数据源的注解标识。
进一步地,所述数据源切换模块,具体用于所述切换路由器模块基于Spring容器的AbstractDataSource类,进行所述目标数据源的切换。
此外,本发明还提供一种存储介质,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如上述实施例中任一项所述的数据源切换方法的步骤。
本发明还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上的并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例中任一项所述的数据源切换方法的步骤。
在本发明所提供的几个实施方式中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据源切换方法,基于Spring和Mybatis框架,其特征在于,包括:
获取配置文件,所述配置文件中包括数据源池;
根据所述配置文件,初始化事物管理器、执行器模块和切换路由器模块;
其中,所述事物管理器基于Spring自带的事物管理器,所述执行器模块基于Mybatis执行器,所述切换路由器模块基于Sping实现,用于切换目标数据源;
基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换。
2.如权利要求1所述的数据源切换方法,其特征在于,所述基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换,具体包括以下步骤:
所述事物管理器获取所述目标数据源的注解标识;
所述执行器模块对所述目标数据源的注解标识解析,并将所述目标源数据源的注解标识的解析结果与所述数据源池中的数据源进行匹配;
若匹配成功,则通过所述切换路由器模块进行所述目标数据源的切换。
3.如权利要求2所述的数据源切换方法,其特征在于,所述事物管理器获取所述目标数据源的注解标识,具体包括以下步骤:
从Spring容器中获取Sql会话工厂SqlSessionFactory,并通过所述SqlSessionFactory得到所述目标数据源;
根据所述目标数据源,得到所述目标数据源的注解标识。
4.如权利要求2所述的方法,其特征在于,所述通过所述切换路由器模块进行所述目标数据源的切换,具体包括:
所述切换路由器模块基于Spring容器的AbstractDataSource类,进行所述目标数据源的切换。
5.一种数据源切换装置,其特征在于,所述数据源切换装置包括配置文件处理模块、初始化模块和数据源切换模块;
配置文件处理模块,用于获取配置文件,所述配置文件中包括数据源池;
所述初始化模块,用于根据所述配置文件,初始化事物管理器、执行器模块和切换路由器模块;其中,所述事物管理器基于Spring自带的事物管理器,所述执行器模块基于Mybatis执行器,所述切换路由器模块基于Sping实现,用于切换目标数据源;
所述数据源切换模块,用于基于所述事物管理器、所述执行器模块和所述切换路由器模块,完成所述目标数据源的切换。
6.如权利要求5所述的数据源切换装置,其特征在于,
所述数据源切换模块,具体用于通过所述事物管理器获取所述目标数据源的注解标识;
通过所述执行器模块对所述目标数据源的注解标识解析,并将所述目标源数据源的注解标识的解析结果与所述数据源池中的数据源进行匹配;
若匹配成功,则通过所述切换路由器模块进行所述目标数据源的切换。
7.如权利要求6所述的数据源切换装置,其特征在于,
所述数据源切换模块,具体用于通过所述事物管理器从Spring容器中获取Sql会话工厂SqlSessionFactory,并通过所述SqlSessionFactory得到所述目标数据源;
根据所述目标数据源,得到所述目标数据源的注解标识。
8.如权利要求6所述的数据源切换装置,其特征在于,
所述数据源切换模块,具体用于所述切换路由器模块基于Spring容器的AbstractDataSource类,进行所述目标数据源的切换。
9.一种存储介质,其特征在于,所述存储介质中存储有指令,当计算机读取所述指令时,使所述计算机执行如权利要求1至4中任一项所述的数据源切换方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上的并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4中任一项所述的数据源切换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010533543.5A CN111708518A (zh) | 2020-06-12 | 2020-06-12 | 一种数据源切换方法、装置、存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010533543.5A CN111708518A (zh) | 2020-06-12 | 2020-06-12 | 一种数据源切换方法、装置、存储介质和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111708518A true CN111708518A (zh) | 2020-09-25 |
Family
ID=72539784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010533543.5A Pending CN111708518A (zh) | 2020-06-12 | 2020-06-12 | 一种数据源切换方法、装置、存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111708518A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190272590A1 (en) * | 2018-02-09 | 2019-09-05 | Deutsche Ag | Stress testing and entity planning model execution apparatus, method, and computer readable media |
CN110209438A (zh) * | 2019-06-04 | 2019-09-06 | 武汉神算云信息科技有限责任公司 | SpringBoot框架下数据源动态切换方法、装置、设备及存储介质 |
CN110442636A (zh) * | 2019-08-22 | 2019-11-12 | 迈普通信技术股份有限公司 | 一种数据的读写方法、装置及数据读写设备 |
-
2020
- 2020-06-12 CN CN202010533543.5A patent/CN111708518A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190272590A1 (en) * | 2018-02-09 | 2019-09-05 | Deutsche Ag | Stress testing and entity planning model execution apparatus, method, and computer readable media |
CN110209438A (zh) * | 2019-06-04 | 2019-09-06 | 武汉神算云信息科技有限责任公司 | SpringBoot框架下数据源动态切换方法、装置、设备及存储介质 |
CN110442636A (zh) * | 2019-08-22 | 2019-11-12 | 迈普通信技术股份有限公司 | 一种数据的读写方法、装置及数据读写设备 |
Non-Patent Citations (1)
Title |
---|
程裕强: "Spring+Mybatis+多数据源(MySQL+Oracle)", 《HTTPS://BLOG.CSDN.NET/CHENGYUQIANG/ARTICLE/DETAILS/80793069》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104423960B (zh) | 一种项目持续集成的方法及*** | |
CN103699548B (zh) | 一种通过使用日志恢复数据库数据的方法及设备 | |
CN112069210A (zh) | 一种saas平台多租户数据隔离方法 | |
CN111258897A (zh) | 业务平台的测试方法、装置及*** | |
CN111241111B (zh) | 数据查询方法及装置、数据对比方法及装置、介质及设备 | |
CN111782635B (zh) | 数据处理方法和装置、存储介质和电子装置 | |
CN111324441A (zh) | 运行环境的切换方法、装置、计算机设备和存储介质 | |
KR102187741B1 (ko) | 메타데이터 크라우드 소싱 시스템 및 방법 | |
CN111177167B (zh) | 增强现实的地图更新方法、装置、***、存储与设备 | |
JP6353163B2 (ja) | 空気清浄用方法、装置、プログラムおよび記録媒体 | |
US20080172669A1 (en) | System capable of executing workflows on target applications and method thereof | |
CN111708518A (zh) | 一种数据源切换方法、装置、存储介质和设备 | |
CN110543756A (zh) | 设备识别方法、装置、存储介质及电子设备 | |
CN110209565A (zh) | 一种元数据模型调试方法及其装置 | |
CN112115910A (zh) | 人脸库更新方法及装置 | |
CN110660124A (zh) | 一种三维模型建模与编辑***和方法 | |
CN108009799B (zh) | 工作流程持久化的方法及装置、存储介质、电子设备 | |
García et al. | Data-intensive analysis for scientific experiments at the large scale data facility | |
CN111782641B (zh) | 数据错误修复方法及*** | |
CN111814439A (zh) | 流程图自动化描述方法和装置 | |
CN113239003A (zh) | 消息的自动提示方法、***、设备及介质 | |
CN112068871B (zh) | 电子设备和应用的管理方法 | |
US20140149419A1 (en) | Complex event processing apparatus for referring to table within external database as external reference object | |
CN115981857B (zh) | 故障分析*** | |
CN111064652B (zh) | 一种微信工作群智能代理管理***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200925 |