多数据源配置
其实多数据源的配置大体上跟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来进行注解
本文介绍如何在SpringBoot环境中配置多数据源,包括使用Druid作为连接池、实现动态数据源切换、配置SqlSessionFactory及事务管理等内容。





1851

被折叠的 条评论
为什么被折叠?



