为确保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