SpringBoot多数据源及事务配置

多数据源配置

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

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

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

DataSource

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

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

AbstractRoutingDataSource

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

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

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

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

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

 

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

SqlSessionFactory

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

事务配置

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

你可能感兴趣的:(SpringBoot,SpringBoot,事务,多数据源,druid)