【发布时间】:2019-04-24 20:24:12
【问题描述】:
我在我的 SpringMVC 项目中配置了 2 个数据源,但是当第二个 数据源不可用,它会自动使用第一个数据源引用第二个数据源。 我想停止这种切换。
代码如下:
调度程序-servlet.xml:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="defaultAutoCommit" value="true"/>
<property name="testOnBorrow" value="true"/>
<property name="initialSize" value="1"/>
<property name="maxActive" value="1"/>
<property name="maxWait" value="500"/>
<property name="maxIdle" value="2"/>
</bean>
<bean id="dataSource1" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false">
<property name="driverClassName" value="${jdbc.driverClassName1}"/>
<property name="url" value="${jdbc.url1}"/>
<property name="username" value="${jdbc.username1}"/>
<property name="password" value="${jdbc.password1}"/>
<property name="defaultAutoCommit" value="true"/>
<property name="testOnBorrow" value="true"/>
<property name="initialSize" value="1"/>
<property name="maxActive" value="3"/>
<property name="maxWait" value="500"/>
<property name="maxIdle" value="8"/>
</bean>
BaseNamedParameterJdbcDaoSupport.java 类:
public class BaseNamedParameterJdbcDaoSupport extends NamedParameterJdbcDaoSupport{
@Autowired
public void setDataSourceFor1(DataSource dataSource) {
// System.out.println("Main DS"+dataSource);
setDataSource(dataSource);
}
}
BaseNamedParameterJdbcDaoSupportForMirrorDB.java:
public class BaseNamedParameterJdbcDaoSupportForMirrorDB extends NamedParameterJdbcDaoSupport{
@Autowired
public void setDataSourceFor2(DataSource dataSource1) {
// System.out.println("ForMirrorDB dataSource1"+dataSource1);
setDataSource(dataSource1);
}
}
【问题讨论】:
-
如何在代码中调用datasource2?
-
像这样:@Repository public class DashboardMirrorDAOImpl extends BaseNamedParameterJdbcDaoSupportForMirrorDB implements DashboardMirrorDAO{ ,现在这个 Impl 中的所有查询都将以 2nd 运行。 .但是当第二个不可用或我从调度程序中删除第二个数据源条目时,它会自动使用第一个数据源:(
标签: java spring spring-mvc datasource spring-jdbc