为确保AbstractRoutingDataSource中的TransactionSynchronizationManager返回正确的值,可以尝试使用以下示例代码:
public class CustomRoutingDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
Object key = RequestContextHolder.getRequestAttributes().getAttribute("dbKey", RequestAttributes.SCOPE_REQUEST);
if (key == null) {
// fall back to a default data source.
key = "defaultDataSource";
}
return key;
}
@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();
setTargetDataSources(new HashMap
此代码通过覆盖determineCurrentLookupKey()方法,从RequestContextHolder中获取当前请求的数据源标识符。同时,使用afterPropertiesSet()和setTargetDataSources()方法确保返回正确的目标数据源。
上一篇:AbstractRoutingDataSource-动态更改数据源无效问题
下一篇:AbstractSecurityInterceptor必须提供一个非空的AccessDecisionManager