我希望在Spring MVC 3.x版本中看到完整的示例代码,在Spring中使用一个DataSources却能够从Java代码中切换数据库的最佳方法是什么?下面是我的两个数据源,它们去到相同的数据库服务器,但是到不同的数据库。
<bean id="ds_hydhccj" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver"></property>
<property name="url" value="jdbc:postgresql://localhost:5432/dbname"></property>
<property name="username" value="postgres"></property>
<property name="password" value="postgres"></property>
</bean>
当我从前端选择要传递其url的dbname的下拉选项时,如何能够使用一个数据源并动态切换数据库?
答案 0 :(得分:0)
首先,您需要获取应用程序上下文,在这种情况下,您可以通过两种方式来实现
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml")
或
@Autowired
private ApplicationContext ctx;
然后,您
DataSource dataSource = (DataSource) context.getBean("ds_hydhccj");
如果您使用的是hibernate之类的框架,建议您创建两个单独的实体管理器,以容纳两个不同的连接。
答案 1 :(得分:0)
AbstractRoutingDataSource
应该是您的朋友。它允许在Spring ApplicationContext中设置一个单一的bean,并具有将其切换到n个实际数据源之一的机制。
您可以在其他SO question
中找到一个简单的示例