具有在运行时创建的多个数据源的 Spring Boot 和 Spring Data 应用程序
Posted
技术标签:
【中文标题】具有在运行时创建的多个数据源的 Spring Boot 和 Spring Data 应用程序【英文标题】:Spring Boot and Spring Data application with multiple DataSources created in runtime 【发布时间】:2015-05-19 05:27:18 【问题描述】:我正在开发一个使用 Spring Data JPA 的 Spring Boot 应用程序,并且需要连接到许多不同的数据库,例如PostreSQL、mysql、MS-SQL、MongoDB。 我需要在运行时创建所有数据源,即用户在启动的应用程序中通过 GUI 选择这些数据: -驱动程序(列表之一), -资源, -港口, -用户名, -密码。 毕竟,他将本机 sql 写入选择的数据库并获得结果。 我在堆栈和弹簧论坛(例如 AbstractRoutingDataSource)中阅读了很多关于它的内容,但所有这些教程都展示了如何从 xml 配置或 java bean 中的静态定义创建数据源。可以在运行时创建许多数据源吗?如何管理事务以及如何创建多个 sessionFactories?可以使用@Transactional 注释吗?最好的方法是什么?有人可以解释我如何“一步一步”做到这一点吗?
【问题讨论】:
如果适合您的需要,请考虑关闭您的问题或将答案标记为已接受的答案。 【参考方案1】:希望答案还为时不晚 ;)
我开发了一个可以轻松集成到任何 Spring 项目中的模块。它使用元数据源来保存租户数据源连接详细信息。 对于租户数据源,使用 AbstractRoutingDataSource。
在这里,您可以找到我使用 AbstractRoutingDataSource 的核心实现。 https://github.com/Dactabird/multitenancy
这是一个展示如何集成它的示例。 https://github.com/Dactabird/multitenancy-sample 在此示例中,我使用的是 H2 嵌入式数据库。当然,你可以使用任何你想要的东西。
请随时根据您的目的对其进行修改或询问是否有问题!
【讨论】:
以上是关于具有在运行时创建的多个数据源的 Spring Boot 和 Spring Data 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何使用spring webflux在功能性反应java中编写具有多个if else的复杂代码
带有 Spring Boot 的 Spring Data JPA 中的多个数据源,[重复]