# 多站点+动态数据源 **Repository Path**: mrengui/multi-site-dynamic-data-source ## Basic Information - **Project Name**: 多站点+动态数据源 - **Description**: 对spring 2.X+jpa的系统可以以极小的修改实现多站点解决方案,依靠多数据源(动态数据源)实现多站点,无需修改项目原本框架,导入依赖即可 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2022-06-02 - **Last Updated**: 2024-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # YUE-基于JPA的多数据源+多站点解决方案 **技术问题麻烦通过issue反馈,整个代码也不复杂,欢迎大家迭代** ###推荐大家使用jar包形式导入自己的项目,拉下代码,配置好文件后package打包即可,另外resources中附带了已经打包好的jar文件 ## 主要使用方法,项目内提供了register方法用于注册数据源,注册时会自动扫描项目内实体并进行初始化 DataSourceConfiguration dataSourceConfiguration=new DataSourceConfiguration(); dataSourceConfiguration.setUsername(username);//数据库账号 dataSourceConfiguration.setPassword(password);//数据库密码 dataSourceConfiguration.setJdbcUrl(jdbcUrl);//完整的jdbcUrl dataSourceConfiguration.setMaximumPoolSize(50);//连接池 dataSourceConfiguration.setKey(vtSite.getDomain());//数据源注入spring容器的key值,一般使用域名来维护多站点 DataSource dataSource=dataSourceRegistrationComponent.registerDataSource(dataSourceConfiguration); ## 针对部分系统可能需要执行sql进行数据库初始化,这里提供一个函数 @Autowired private DataSourceRegistrationComponent dataSourceRegistrationComponent; dataSourceRegistrationComponent.initDBData((HikariDataSource) springContextUtils.getBean("siteMaster"), sql列表)) //springContextUtils.getBean("siteMaster") 获取主数据源 ## 另外pom文件中,原来的url需要改为jdbc-url ![输入图片说明](resources/img.png) **以上为多数据源解决方案** ## 多站点(依靠多数据源维护) ![img_1.png](resources/img_1.png) **继承MultipleSiteAsp 重写tableBase即可,通常在注册数据源时将域名设置为key值,通过tableBase返回域名信息,系统会自动匹配对应的数据源进行查询** ![img_2.png](resources/img_2.png) **最后在需要多站点的接口上标记注解 @MultipleSite即可**