SpringBoot多数据源及事务配置

本文介绍如何在SpringBoot环境中配置多数据源,包括使用Druid作为连接池、实现动态数据源切换、配置SqlSessionFactory及事务管理等内容。

多数据源配置

其实多数据源的配置大体上跟Spring是相同的,不同之处仅在于SpringBoot推崇省略xml配置,取而代之使用JavaConfig来配置多数据源

针对目前所使用的Spring+MyBatis框架而言,数据源的配置最重要的两点是配置DataSource以及SqlSessionFactory,然而为了实现动态数据源我们还需要拓展AbstractRoutingDataSource

并且以注解形式来标示数据源

DataSource

在这里我们采用阿里巴巴的Druid来管理数据库连接池,包的依赖引用在此不再赘述,我们直接上代码

这里简单讲一下,我们配置了两个数据源,这两个数据的详细配置项均维护成了私有变量并通过 @value 注解进行数据注入,之前我们提到过SpringBoot的九种配置方式,此处的 @value 就会按照优先级顺序读取所标示的值,此处我们将相关属性配置在了application.properties中

AbstractRoutingDataSource

为了实现动态数据源我们需要继承AbstractRoutingDataSource来实现,AbstractRoutingDataSource内部维护了一个Map<Object, Object> targetDataSources 来承载多个数据源

并且需要实现determineCurrentLookupKey()方法来实现动态数据源的更换

在这里我们利用注解来标示数据源的使用,并且在实现类中维护了一个DataSourceHolder静态内部类来获取注解

判断注解则是通过拦截器的形式来实现的

不要忘记配置拦截器并且设置扫描路径;

 

以下是实现的determineCurrentLookupKey(),因为我们目前主要的实现的目的是读写分离,所以Map<Object, Object> targetDataSources中维护得键以WRITE和READ_来区别

SqlSessionFactory

SqlSessionFactory的配置则要简单的多,只需要配置相应的数据源以及扫描路径即可

事务配置

事务配置由于SpringBoot的默认实现可以省略,可以直接应用@Transactional来进行注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值