基于SpringBoot+Mybatis的SaaS平台搭建-创新互联

SaaS平台是什么

成都创新互联公司服务项目包括岚皋网站建设、岚皋网站制作、岚皋网页制作以及岚皋网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,岚皋网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到岚皋省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

  英语Software-as-a-Service ,就是提供软件服务的平台。基于JavaWeb的思想,可以在线上部署一套程序,根据权限将租户逻辑上分离,让每个租户具有独立的数据空间,当然也可以在数据库层面可以根据标识在同一个表中数据独立,也可以根据不同的租户设立不同的数据库进行数据独立。考虑到后续租户可能会大概率脱离SaaS平台私有搭建,所以本篇文章是以分库的方式实现SaaS平台。

MyBatis如何实现动态数据源

  话不多说,直接上代码

public class DynamicRoutingDataSource extends AbstractRoutingDataSource {

    private static MaptargetTargetDataSources = new ConcurrentHashMap<>();

    @Override
    protected Object determineCurrentLookupKey() {
        // 每次连接数据库,都会去设置数据源
        return DynamicDataSourceContextHolder.getDataSourceKey();
    }

    // 设置targetDataSources并记录数据源(这里可以记录每个数据源的最近使用时间,可以做删除不经常使用的数据源)
    @Override
    public void setTargetDataSources(MaptargetDataSources) {
        super.setTargetDataSources(targetDataSources);
        super.afterPropertiesSet();
        targetTargetDataSources = targetDataSources;
    }

    // 添加数据源
    public void addDataSource(String tenant, MapdataSourceProperties) {
        targetTargetDataSources.put(tenant, dataSource(dataSourceProperties));
        super.setTargetDataSources(targetTargetDataSources);
        afterPropertiesSet();
    }

    // 判断是否存在数据源,存在直接取
    public boolean existDataSource(String tenant) {
        return targetTargetDataSources.containsKey(tenant);
    }

    // 组装数据源
    public DataSource dataSource(MapdataSourceProperties) {
        DataSource dataSource;
        try {
            dataSource = DruidDataSourceFactory.createDataSource(dataSourceProperties);
        } catch (Exception e) {
            throw new RuntimeException();
        }
        return dataSource;
    }
}

核心代码就这些。SaaS平台分库的方式,其实根据不同的用户,使用不同的数据源。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:基于SpringBoot+Mybatis的SaaS平台搭建-创新互联
路径分享:http://scyanting.com/article/cessij.html