资讯专栏INFORMATION COLUMN

单数据源访问多数据库的路由开发

frank_fun / 2094人阅读

摘要:单数据源访问多数据库的路由开发在某些可以配置多站点的开发框架中,如果每个站点多带带配置了多带带的数据库。那么利用单一数据源根据不同的站点切换不同的数据库比较方便。在这里展示了框架下的解决方案。在切换数据库之前,需要先再进行切换

单数据源访问多数据库的路由开发

在某些可以配置多站点的开发框架中,如果每个站点多带带配置了多带带的数据库。那么利用单一数据源根据不同的站点切换不同的数据库比较方便。

在这里展示了spring框架下的解决方案。利用了spring的org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource

站点路由的datasource SiteRoutingDataSource

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class SiteRoutingDataSource extends AbstractRoutingDataSource {

  @Override
  protected Object determineCurrentLookupKey() {
    return SiteContextHolder.getSiteCode();
  }
}

用来判定当前站点的工具类SiteContextHolder

import org.springframework.util.Assert;

public class SiteContextHolder {

  private static final ThreadLocal contextHolder =
    new ThreadLocal();

  public static void setSiteCode(String siteCode) {
    Assert.notNull(siteCode, "siteCode cannot be null");
    contextHolder.set(siteCode);
  }

  public static String getSiteCode() {
    return (String) contextHolder.get();
  }

  public static void clearSiteCode() {
    contextHolder.remove();
  }
}

spring的xml配置:

    
        
            ${hgc.datasource.driverClassName}
        
        
            ${hgc.datasource.url}
        
        
            ${hgc.datasource.username}
        
        
            ${hgc.datasource.password}
        
    
    
        
            ${ahpu.datasource.driverClassName}
        
        
            ${ahpu.datasource.url}
        
        
            ${ahpu.datasource.username}
        
        
            ${ahpu.datasource.password}
    
        
        
            
                
                
            
        
        
    

在使用过程中 通过 SiteContextHolder.setSiteCode(CODE);来进行数据源选择。在切换数据库之前,需要先SiteContextHolder.clearSiteCode();再进行切换

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64880.html

相关文章

  • 据源访问数据路由开发

    摘要:单数据源访问多数据库的路由开发在某些可以配置多站点的开发框架中,如果每个站点单独配置了单独的数据库。那么利用单一数据源根据不同的站点切换不同的数据库比较方便。在这里展示了框架下的解决方案。在切换数据库之前,需要先再进行切换 单数据源访问多数据库的路由开发 在某些可以配置多站点的开发框架中,如果每个站点单独配置了单独的数据库。那么利用单一数据源根据不同的站点切换不同的数据库比较方便。 在...

    Code4App 评论0 收藏0
  • 最近想通几个页面应用开发重点

    摘要:老实说我不是第一次想歪了而且很慢总是不能很快抓住要点当别人用后端从做博客做论坛联系完成的应用的时候我跑去学单页面应用还很久挣扎在的思路当中我想说的是走大多数人走的路的确是可以减少浪费的时间和错误的走少数人在的路当然也刺激的我最近才明白原来前 老实说我不是第一次想歪了, 而且很慢, 总是不能很快抓住要点. 当别人用后端 MVC 从做博客做论坛, 联系完成 MVC 的应用的时候 我跑去学单...

    yibinnn 评论0 收藏0
  • 基于 Webpack 4 入口生成模板用于服务端渲染方案及实战

    摘要:原作者原链接基于多入口生成模板用于服务端渲染的方案及实战法律声明警告本作品遵循署名非商业性使用禁止演绎未本地化版本协议发布。这是什么背景现代化的前端项目中很多都使用了客户端渲染的单页面应用。 原作者:@LinuxerPHL原链接:基于 Webpack 4 多入口生成模板用于服务端渲染的方案及实战 法律声明 警告:本作品遵循 署名-非商业性使用-禁止演绎3.0 未本地化版本(CC BY-...

    big_cat 评论0 收藏0
  • 基于 Webpack 4 入口生成模板用于服务端渲染方案及实战

    摘要:原作者原博文地址基于多入口生成模板用于服务端渲染的方案及实战法律声明警告本作品遵循署名非商业性使用禁止演绎未本地化版本协议发布。这是什么背景现代化的前端项目中很多都使用了客户端渲染的单页面应用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服务端渲染的方案及实战 法律声明 警告:本作品遵循 署名-非商业性使用-禁止演绎3.0 未本地化版本(...

    Lavender 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<