多租户系统实现

这个项目是来试多数据源切换的。    中台是管理库,租户库是要切换的数据源。
gate的数据库中配置了一张表记录了所有租户的地址,用户密码等,项目启动初始化
所有的租户数据源targetDataSources.put(app.getAppToken(), da);
// 将主数据源添加到更多数据源中
targetDataSources.put("dataSource", defaultDataSource);

访问时
1、DynamicDataSource extends AbstractRoutingDataSource    入口在这,返回选择的数据库的名字。(定义了一个动态数据源);
   registry.registerBeanDefinition("dataSource", beanDefinition);  覆盖默认的datasource         这段代码要在系统启动运行,所以在boot启动类import了这个类
2、request请求过来时,拦截器拿到 先校验,再选择当前线程的数据源  DynamicDataSourceContextHolder.setDataSource(token);
3、对于访问管理库的请求放过去(路径以"_gate"开头的),就用默认的数据源。

(为何对于拦截器中抛出异常的请求会进入拦截器两次?  抛出后又进来一次)

源码:

https://github.com/LetsGoStan/gate.git

 

 

另一种多数据源的配置,dao层不同包下用不一样的数据源,适用于每个数据源做不同的业务(操作代码不同)。 

   

   

你可能感兴趣的:(多数据源,多租户,中台)