多租户系统实现

这个项目是来试多数据源切换的。    中台是管理库,租户库是要切换的数据源。
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层不同包下用不一样的数据源,适用于每个数据源做不同的业务(操作代码不同)。 

<!-- DAO接口所在包名,Spring会自动查找其下的类 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

    <property name="basePackage" value=com.*.*.dao" />

    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>

</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值