我有以下问题。有2个2db的数据源:current(A)和Standby(B)。如果A没有回应,我将尝试连接B。

这就是我做到的方式。


拦截器检查连接是否不良
如果出现问题,拦截器将交换数据源URL


数据源是Spring bean。因此,我即时更改了Spring bean的属性。这可以吗?看一下代码:

@Autowired
@Qualifier("dataSourceMain")
private oracle.jdbc.pool.OracleDataSource dsMain;

@Autowired
@Qualifier("dataSourceStandBy")
private oracle.jdbc.pool.OracleDataSource dsStandBy;

public void swapURL() {
    try {
        String dsMainURL = dsMain.getURL();
        dsMain.setURL(dsStandBy.getURL());
        dsStandBy.setURL(dsMainURL);
    } catch (Exception e) {
        e.printStackTrace();
    }
}


如我所见,我的代码有效,但是我不知道这是否是一种好方法。

最佳答案

您能检查一下是否解决了您的问题?好像是一个类似的问题
dynamically change Spring data source
这似乎以一种更优雅的方式完成

10-02 06:04