AbstractRoutingDataSource动态数据源切换,AOP实现动态数据源切换(实例)

1.数据源连接,默认连接数据源

2.通过继承AbstractRoutingDataSource管理数据源

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class DynamicDataSource extends AbstractRoutingDataSource{
    
    public static final String DATASOURCE_SRM = "dataSourceSRM";  
    public static final String DATASOURCE_BI = "dataSourceBI";  
    public static final String DATASOURCE_GJ = "dataSourceGJ"; 
    public static final String DATASOURCE_IWMS = "dataSourceIWMS";
    
    private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();  
  
    public static void setDataSourceKey(String dataSource) {  
        dataSourceKey.set(dataSource);  
    }  
    
    public static void clearDataSourceKey() {
        dataSourceKey.remove();
    }
    
    public static String getDataSourceKey() {  
        return ((String) dataSourceKey.get());  
    }  
  
    @Override  
    protected Object determineCurrentLookupKey() {  
        return dataSourceKey.get();  
    }
    
}

3.切换数据源,记录数据源查询日志到默认数据源

4.在mapper连接对应数据源的表进行数据查询

5.保存日志到默认数据源

6.事务处理所有的数据源

结束

猜你喜欢

转载自blog.csdn.net/qq_19897551/article/details/84339217