使用Spring Boot和Spring Data创建运行时多个数据源的应用程序

10

我正在开发一个使用Spring Data JPA的Spring Boot应用程序,需要连接许多不同的数据库,例如PostgreSQL、MySQL、MS-SQL和MongoDB等。

我需要在运行时创建所有数据源,即用户通过GUI在启动的应用程序中选择这些数据:

  • 驱动程序(列表中的一个)
  • 端口
  • 用户名
  • 密码

最后,他会写原生SQL到所选的数据库并获取结果。

我在Stack和Spring论坛上读了很多关于它的文章(例如AbstractRoutingDataSource),但是所有这些教程都展示如何从XML配置或Java bean的静态定义创建数据源。是否有可能在运行时创建多个数据源?如何管理事务以及如何创建多个sessionFactory?可以使用@Transactional注释吗?最好的方法是什么?有人能够“逐步”向我解释如何做到这一点吗?


如果回答符合您的需求,请考虑关闭您的问题或将其标记为已接受的答案。 - isaias-b
1个回答

7
希望回答不会太晚;)我开发了一个模块,可以轻松地集成到任何Spring项目中。它使用元数据源来保存租户数据源连接详细信息。对于租户数据源,使用了AbstractRoutingDataSource。
在此处找到使用AbstractRoutingDataSource的核心实现: https://github.com/Dactabird/multitenancy 以下是一个示例,说明如何进行集成: https://github.com/Dactabird/multitenancy-sample 在这个示例中,我使用了H2嵌入式数据库。但当然你可以使用任何你想要的。
请随意修改它以适应您的目的,或者如果还有问题,请随时提问!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接