多数据源切换--Springboot

2019/06/09

简介

多数据源切换–Springboot–mybatis.本文介绍两种数据源的配置方式. 分包和基于aop的方式

代码地址

AOP : GitHub代码地址

分包 : GitHub代码地址

mybatis Aop

和spring的多数据源配置原理一样不过就是把xml配置改为的java配置

  1. 配置pom.xml

  2. 添加测试数据

    img

  3. 配置properties

    img

  4. 配置数据源

    img

  5. 配置数据源的切换获取类DbContextHolder

    img

  6. 扩展Spring的AbstractRoutingDataSource抽象类,实现动态数据源。

    img

  7. 配置 使用哪个数据源的注解 和AOP

    img

  8. 在mapper上添加注解

    img

  9. 测试

    img

mybatis 分包

  1. pom.xml

    img

  2. 添加测试数据

    img

  3. 配置properties

    img

  4. 配置数据源01

    img

  5. 配置数据源02

    img

  6. 配置mapper01 接口 和 xml

    img

  7. 配置mapper02 接口 和 xml

    img

  8. 配置测试service

    img

  9. 测试

    img

  10. 查看插入结果

FAQ

在整理问题前,先总结下mybatis数据源注入的流程

  1. sping加载时通过MapperScan注解扫描,需要注入的接口bean,然后通过动态代理的方式实例化接口bean
  2. 在实例化接口bean时,会通过Maperscan中配置的sqlSessionFactoryRef来确定使用那个sessionfacory,如果没有配置则会寻找sessionFactory的工厂bean,如果此时存在多或者不存在则报错,存在多个时需要通过@Primary注解来定义使用哪个factory

问题 :

img

原因 : 找到了两个sqlSessionFactory

参考链接 :

解决 : 添加Primary注解

img


问题 :

img

原因 : xml文件没有添加到,相应的解析路径,或者包名配置错误

参考链接 :

解决 :

img


无法获取到方法上自定义的注解

问题 : 使用自定义注解getAnnotation无法获取到

原因 : 创建注解时没有添加元注解

参考链接 :

解决 :

img

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
@Documented

参考链接

springboot-mybatis多数据源的两种整合方法

springboot + mybatis + druid + 多数据源

Spring Boot多数据源配置与使用

spring aop获取目标对象的方法对象(包括方法上的注解)

解决 getAnnotation为null的坑

(本篇博文完结;中文字数一共:1244字,英文字数一共:276 字)


扫扫加关注公众号 让我们一起学习一起成长

(转载本站文章请注明作者和出处 IT超仔

Post Directory