[东方财富网鑫东财十倍配资]丽新国际AbstractRoutingDataSource 实现动态数据源切换原理简单分析

AbstractRoutingDataSource 实现动态数据源切换原理简单分析

写在前面,项目中用到了动态数据源切换,记录一下其运行机制。

代码展示

下面列出一些关键代码,后续分析会用到

数据配置

@Configuration @PropertySource({ "classpath:jdbc.yml" }) @EnableTransactionManagement(proxyTargetClass = true) public class DataConfig { @Autowired private Environment env ; /** * 将jdbc相关的异常转换为spring的异常类型 */ @Bean public BeanPostProcessor persistenceTransLation(){ return new PersistenceExceptionTranslationPostProcessor() ; } /** * 多数据源 * @return */ @Bean public DynamicDataSource dynamicDataSource(){ DynamicDataSource dynamicDataSource = new DynamicDataSource(); Map<Object,Object> sourceMap = new HashMap<>(); //取得所有的datasource,DataSourceEnum里存放数据源的唯一标识 EnumSet<DataSourceEnum> enums = EnumSet.allOf(DataSourceEnum.class); for(DataSourceEnum dataSource:enums){ // map存放数据源的key和数据源 sourceMap.put(dataSource.getKey(),generateDataSource(dataSource.getKey())); } // ,〔 股票配资onemiao〕