我想知道在Spring中使用一个DataSources的最好方法是什么,同时又能够在Java代码中切换数据库?下面是我的两个DataSources,它们转到相同的数据库服务器,但不同的数据库。
<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并在需要时切换数据库,有什么想法/想法吗?
发布于 2013-01-15 11:50:30
您可以通过扩展Spring的AbstractRoutingDataSource并将现有的数据源包装在其中来实现这一点。有关详细信息,请查看this article。引述自文章:
一般的想法是路由DataSource充当中介-而“真正的”DataSource可以在运行时基于查找关键字动态确定。
也可以在SO上看到类似的问题:
发布于 2013-01-15 11:44:13
有很多方法可以做到这一点。例如,您可以创建一个服务类DatasourceSelectorService,然后根据一些输入(例如:配置文件/用户输入)选择相应的datasource's bean。
所有其他需要datasource的类都应该通过这个DatasourceSelectorService获取它。
https://stackoverflow.com/questions/14330668
复制相似问题