gpt4 book ai didi

java - Spring MVC 中的多数据源切换问题。当第二个数据源不可用时,它会自动使用第一个数据源,其中引用第二个数据源

转载 作者:行者123 更新时间:2023-12-02 10:34:01 25 4
gpt4 key购买 nike

我在 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);
}

}

最佳答案

使用不同名称维护的数据源不可能自动切换。我认为您已经实现了一些其他逻辑来处理这两个 DataSource 对象。

检查您的 DAO/服务代码,以利用适当的 @Autowired 的“BaseNamedParameterJdbcDaoSupport”和“BaseNamedParameterJdbcDaoSupportForMirrorDB”。

关于java - Spring MVC 中的多数据源切换问题。当第二个数据源不可用时,它会自动使用第一个数据源,其中引用第二个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426087/

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