springboot多数据源配置
今日在工作中遇到这样一个需求,我们将另外一个项目A的数据库中的数据同步过来,并且当数据库中的数据有更新时也要实时更新,第一时间想到了写一个定时器,通过多数据源从项目A的数据库中拉取数据,然后更新。项目使用的springboot+mybatis。关于多数据源的配置网上的教程有很多,这里就不多说了,贴上我参考的两个链接。
第一种,通过aop动态切换数据源
https://blog.csdn.net/xiaosheng_papa/article/details/80218006
第二种,通过指定不同的dao层来操作不同的数据库
https://blog.csdn.net/u012343297/article/details/78835185
这两种方法我都亲测可行的。开始我采用的是第一种方法,因为第一种方法在我看来更优雅也更灵活。但是实际使用的时候遇到了一个问题,那就是我在定时器里面引用了一个service方法,这个service方法里面会同时操作两个数据库。当我在这个service方法中加上@Transactional注解后发现多数据源失效了,无法操作项目A的数据库。网上也没有搜到比较好的教程解决这个问题。然后我就采用了第二种方法,事务能够起作用,而且也能够同时操作多个数据库。算是成功解决了问题。
至于第一种方法添加事务导致切换数据源失败的问题,网上教程都有说是可以解决的。目前项目进度比较紧,只能以完成任务为首要目的,等有时间闲下来之后会去试着解决这个问题。

浙公网安备 33010602011771号