首页 > 其他 > 详细

ssm配置动态

时间:2019-10-11 13:09:29      阅读:98      评论:0      收藏:0      [点我收藏+]

   记录一下ssm项目配置多数据源的方式。

    使用场景:多个单体架构的项目存在依赖或者衍生关系的时候,我们不得不在同一个项目使用多个数据源。

    涉及到的技术:jdk1.8、jdk自定义注解、spring aop、java反射。

    原理:利用spring框架提供的AbstractRoutingDataSource,顾名思义,数据源路由。这里我们把它理解为管理数据源的路由器,他并不管理数据源生存与销毁,他只是数据源传递者。举个核桃:假如mybatis接收到sql execute指令,此时需要sqlsession来连接数据库,众所周知sqlsession需要我们提供数据源由sqlsessionfactory工厂生产(工厂模式就不再介绍了),AbstractRoutingDataSource 就提供了“后门”让开发者可以动态地选择使用哪一个数据源交给 sqlsession工厂。 of cource,如果项目仅需要一条数据源,那就完全没必要去设置了。 

    实现思路:自定义注解@DataSource保存在spring容器中注册的数据源,业务层实现类加上@DataSource注解,利用spring apo切入业务层的所有方法,在切点中过滤加上@DataSource注解的类或方法,并获取到该注解中的数据源名称保存到ThreadLocal<String> 中,通过jdk官方的描述可以知道,每个线程都有独立的变量副本。接下来我们在spring选择数据源的时候把ThreadLocal<String>中保存的数据源取出来即可。

技术分享图片

 配置步骤:1,准备多个数据源。

   技术分享图片

        技术分享图片

                 这里准备了两个数据源

 

 2,新建动态数据源类并且继承AbstractRoutingDataSource ,并且注册到spring容器中

     技术分享图片                        技术分享图片

   3,配置apo

  技术分享图片

    技术分享图片

 技术分享图片

      最后测试通过,结果就不贴出来了。

ssm配置动态

原文:https://www.cnblogs.com/lzwnodes/p/11653399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!