SpringBoot如何实现多数据源,扩展点

mybatis整合spring后想要执行sql操作是通过SpringManagedTransaction来获取Connection对象的,它最终是要从IOC容器中去获取一个DataSource类型的bean调用getConnection()方法来获取连接对象,包括Spring事务也是这样获取Connection对象的。
想要实现多数据源我们可以写一个配置类创建多个DataSouce bean,但是我们无法动态控制使用哪个DataSource bean

因此可以自定义一个动态数据源类实现javax.sql.DataSource接口,在自定义getConnection()方法中来扩展,来选择具体从哪个数据源里获取连接对象,创建一个配置类定义我们的自定义动态数据源bean和其他的具体数据源bean,并将自定义动态数据源bean设为默认注入的

具体实现,使用自定义注解标注在service方法上来指定数据源,定义一个AOP切面,读取注解的属性,将其保存到线程变量,当mybatis或spring事务要获取连接Connection对象时就会调用我们自定义的动态数据源的getConnection()方法,我们就可以在其中读取线程变量的属性然后来选择具体使用哪个数据源的来获取连接对象

具体代码实现想必不用多说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值