# tulang-datasource **Repository Path**: ygypc/tulang-datasource ## Basic Information - **Project Name**: tulang-datasource - **Description**: 数据源 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-22 - **Last Updated**: 2025-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tulang Datasource **Tulang Datasource** 是一个基于 Java 的数据源管理组件,主要用于处理多数据源动态切换和租户数据源路由的场景。该项目适用于需要动态数据源配置的企业级应用开发。 ## 项目结构 - **datasource-context** 提供动态数据源上下文管理功能,核心类为 `DynamicDsContextHolder`,用于维护当前线程的数据源上下文。 - **tenant-datasource** 提供租户数据源路由功能,核心类为 `TenantDataSource`,继承自 Spring 的 `AbstractRoutingDataSource`,实现多租户环境下的数据源动态路由。 - **构建脚本** 提供 Maven 构建脚本,包括版本管理 (`mvn-version.sh`)、安装 (`mvn-install.sh`) 和部署 (`mvn-deploy.sh`)。 ## 核心组件 ### DynamicDsContextHolder 用于管理线程级别的数据源上下文,支持设置、获取和清除数据源名称。 ```java DynamicDsContextHolder.setDynamicDsContext("dsName"); String currentDs = DynamicDsContextHolder.getDynamicDsContext(); DynamicDsContextHolder.clearDynamicDsContext(); ``` ### TenantDataSource 多租户数据源路由类,根据当前上下文动态决定使用哪个数据源。 ```java @Override protected Object determineCurrentLookupKey() { // 实现数据源选择逻辑 } ``` ## 使用场景 - 多数据源切换(如读写分离、不同业务模块使用不同数据库) - 多租户架构下的动态数据源路由 ## 构建与部署 使用 Maven 构建项目: ```bash ./mvn-install.sh ``` 部署到远程仓库: ```bash ./mvn-deploy.sh ``` ## 许可证 该项目遵循 MIT 许可证,请查看 [LICENSE](LICENSE) 文件获取详细信息。 ## 贡献指南 欢迎贡献代码和改进文档。请提交 PR 或 Issue 到 [Gitee 仓库](https://gitee.com/ygypc/tulang-datasource)。 --- 如需更详细的文档或示例,请补充说明。