我有以下问题。有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
这似乎以一种更优雅的方式完成