gpt4 book ai didi

java - 如何使用一个数据源以编程方式更改 Spring 中的数据库?

转载 作者:IT老高 更新时间:2023-10-28 13:49:23 30 4
gpt4 key购买 nike

我正在寻找在 Spring 中使用一个数据源但能够从 Java 代码中切换数据库的最佳方式是什么?下面是我的两个数据源,它们转到同一个数据库服务器但不同的数据库。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
<property name="url"
value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE_EMS" />
<property name="username" value="userid" />
<property name="password" value="derp" />
</bean>

<bean id="dataSourceMain" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.sybase.jdbc3.jdbc.SybDataSource" />
<property name="url"
value="jdbc:sybase:Tds:10.20.30.40:50/DATABASE" />
<property name="username" value="userid" />
<property name="password" value="derp" />
</bean>

我将它们绑定(bind)到各自的 bean,但我正在查看我的遗留代码,用 2 个单独的 bean 实现它会非常尴尬。关于如何在需要时使用一个数据源并切换数据库有什么想法/想法?

最佳答案

您可以通过扩展 Spring 的 AbstractRoutingDataSource 并将现有数据源包装在其中来做到这一点。查看 this article详情。引用文章:

The general idea is that a routing DataSource acts as an intermediary – while the 'real' DataSource can be determined dynamically at runtime based upon a lookup key.

另见关于 SO 的类似问题:

  1. Using AbstractRoutingDataSource to dynamically change the database schema/catalog
  2. Reading from multiple Db's with same Persistence Unit?
  3. How to create Dynamic connections (datasource) in spring using JDBC

关于java - 如何使用一个数据源以编程方式更改 Spring 中的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330668/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com