| | |
| | | { |
| | | DataSource dataSource = getDataSource(point); |
| | | |
| | | // 记录当前数据源,用于判断是否需要恢复 |
| | | String oldDataSourceType = DynamicDataSourceContextHolder.getDataSourceType(); |
| | | boolean isNewDataSource = false; |
| | | |
| | | if (StringUtils.isNotNull(dataSource)) |
| | | { |
| | | DynamicDataSourceContextHolder.setDataSourceType(dataSource.value().name()); |
| | | String newDataSourceType = dataSource.value().name(); |
| | | // 只有当数据源发生变化时才设置新的数据源 |
| | | if (!newDataSourceType.equals(oldDataSourceType)) |
| | | { |
| | | DynamicDataSourceContextHolder.setDataSourceType(newDataSourceType); |
| | | isNewDataSource = true; |
| | | logger.debug("切换数据源: {} -> {}", oldDataSourceType, newDataSourceType); |
| | | } |
| | | } |
| | | |
| | | try |
| | |
| | | } |
| | | finally |
| | | { |
| | | // 销毁数据源 在执行方法之后 |
| | | // 只有当本次调用改变了数据源时,才需要恢复 |
| | | if (isNewDataSource) |
| | | { |
| | | // 恢复到之前的数据源 |
| | | if (StringUtils.isNotEmpty(oldDataSourceType)) |
| | | { |
| | | DynamicDataSourceContextHolder.setDataSourceType(oldDataSourceType); |
| | | logger.debug("恢复数据源: {}", oldDataSourceType); |
| | | } |
| | | else |
| | | { |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | logger.debug("清除数据源,恢复到默认数据源"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |