Java web项目--Spring数据源切换

来源:互联网 发布:数据量化方法 编辑:程序博客网 时间:2024/06/08 03:09

一、创建一个DataSource类去继承 AbstractRoutingDataSource

/** * @author Administrator */public class DataSources extends AbstractRoutingDataSource{@Override      protected Object determineCurrentLookupKey() {          return DataSourceSwitch.getDbType();      }  }
二、创建一个数据源的标识常量类

/** * 数据源的标识常量类 * @author Administrator * */public class DataSourceInstances {public static final String DATA_SOURCE_1="DATA_SOURCE_1";  //常量名对应的数据源配置文件中不同数据源的名称public static final String DATA_SOURCE_2="DATA_SOURCE_2";  //常量名对应的数据源配置文件中不同数据源的名称}
三、创建一个DataSourceSwitch类

public class DataSourceSwitch {     private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();         public static void setDbType(String dbType) {              contextHolder.set(dbType);       }         public static String getDbType() {              return ((String) contextHolder.get());       }         public static void clearDbType() {              contextHolder.remove();       }  }
四、创建一个DataSourceInterceptor 类
public class DataSourceInterceptor {public void setdataSourceSqlServer(JoinPoint jp) {String dataSourceString=DataSourceSwitch.getDbType();if(!"DATA_SOURCE_1".equals(dataSourceString)&&!"null".equals(dataSourceString)){DataSourceSwitch.setDbType(DataSourceInstances.DATA_SOURCE_1);}}public void setdataSourceMysql(JoinPoint jp) {String dataSourceString=DataSourceSwitch.getDbType();if(!"DATA_SOURCE_2".equals(dataSourceString)&&!"null".equals(dataSourceString)){DataSourceSwitch.setDbType(DataSourceInstances.DATA_SOURCE_2);}}}




原创粉丝点击