如何使用一个DataSource以编程方式更改Spring中的数据库?
我想看看在Spring中使用一个DataSources的最佳方法是什么,但能够从Java代码中切换数据库? 下面是我的两个DataSource,它们转到相同的数据库服务器但是不同的数据库。
我让他们绑定到他们各自的bean,但我正在查看我的遗留代码,用2个独立的bean实现它将非常尴尬。 在需要时,是否有关于如何使用一个DataSource和切换数据库的想法/想法?
您可以通过扩展Spring的AbstractRoutingDataSource
并将现有数据源包装在其中来实现。 查看此文章了解详细信息。 引用文章:
一般的想法是路由DataSource充当中介 – 而’真实’DataSource可以在运行时基于查找键动态确定。
另请参阅关于SO的类似问题:
- 使用AbstractRoutingDataSource动态更改数据库架构/目录
- 从具有相同持久性单元的多个Db读取?
- 如何使用JDBC在spring中创建动态连接(数据源)
有很多方法可以做到这一点。 例如,您可以创建服务类DatasourceSelectorService
,并根据某些输入(例如:配置文件/用户输入),相应地选择datasource's
bean。
所有其他需要datasource
类都应该通过此DatasourceSelectorService获取它。