多数据源切换是指项目所需要不止一个数据库的连接信息,比如同一数据库地址下的不同库或者不同的连接地址连接不同的数据库。一般的应用系统都只会连接一个数据库来管理和读取数据,这种场景能够适用于绝大部分的实际需求。但有些特殊的业务需求可能需要连接多个数据库,来进行不同的业务数据处理。在这种业务场景下就需要多数据源的自动切换。
本文主要介绍基于注解和AOP的方法来实现多数据源的切换。
配置文件application.yml中数据库的配置如下:
在这里的配置文件中我们只配置了两个数据源,可以根据自己的项目需求,配置多个数据源。
配置数据源:
1.创建类:DynamicDataSourceContextHolder(该类为数据源上下文配置,用于切换数据源)
2.创建类:DynamicDataSource 并继承AbstractRoutingDataSource,重写该类的determineCurrentLookupKey()方法。在访问数据库时,通过该方法来获取数据库实例。
3.创建类:DynamicDataSourceRegister 进行动态数据源注册,在该类中生成多个数据源实例并将其注入到ApplicationContext中
4.创建类:DynamicDataSourceAspect 动态数据源的切换的切面
5.创建自定义注解:@TargetDataSource 将该注解使用到方法上,来指定具体需要使用的数据源
值得注意的是:在使用Mybatis时,注解@TargetDataSource不能直接在接口类Mapper上使用。另外在启动类中添加上注解@Import(DynamicDataSourceRegister.class),通过以上配置,我们就可以根据业务需求通过对不同的方法指定具体的数据源,来达到多数据源切换的目的了。
领取专属 10元无门槛券
私享最新 技术干货