1. 程式人生 > >AbstractRoutingDataSource 實現動態資料來源切換原理簡單分析

AbstractRoutingDataSource 實現動態資料來源切換原理簡單分析

# AbstractRoutingDataSource 實現動態資料來源切換原理簡單分析 > 寫在前面,專案中用到了動態資料來源切換,記錄一下其執行機制。 ## 程式碼展示 下面列出一些關鍵程式碼,後續分析會用到 1. 資料配置 ```java @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 sourceMap = new HashMap<>(); //取得所有的datasource,DataSourceEnum裡存放資料來源的唯一標識 EnumSet enums = EnumSet.allOf(DataSourceEnum.class); for(DataSourceEnum dataSource:enums){ // map存放資料來源的key和資料來源 sourceMap.put(dataSource.getKey(),generateDataSource(dataSource.getKey())); } //