首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用一个DataSource在Spring中以编程方式更改数据库?

如何使用一个DataSource在Spring中以编程方式更改数据库?
EN

Stack Overflow用户
提问于 2013-01-15 11:23:38
回答 2查看 23.5K关注 0票数 11

我想知道在Spring中使用一个DataSources的最好方法是什么,同时又能够在Java代码中切换数据库?下面是我的两个DataSources,它们转到相同的数据库服务器,但不同的数据库。

代码语言:javascript
复制
<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>

我将它们绑定到各自的bean上,但我正在查看我的遗留代码,使用两个单独的bean来实现这一点将非常笨拙。关于如何使用一个DataSource并在需要时切换数据库,有什么想法/想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-15 11:50:30

您可以通过扩展Spring的AbstractRoutingDataSource并将现有的数据源包装在其中来实现这一点。有关详细信息,请查看this article。引述自文章:

一般的想法是路由DataSource充当中介-而“真正的”DataSource可以在运行时基于查找关键字动态确定。

也可以在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
票数 14
EN

Stack Overflow用户

发布于 2013-01-15 11:44:13

有很多方法可以做到这一点。例如,您可以创建一个服务类DatasourceSelectorService,然后根据一些输入(例如:配置文件/用户输入)选择相应的datasource's bean。

所有其他需要datasource的类都应该通过这个DatasourceSelectorService获取它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14330668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档