前言
最近需要实现一个功能,动态刷新线上数据源环境,下面来使用Apollo配置中心和Spring提供的AbstractRoutingDataSource来实现。
具体实现
Apollo是携程开源的统一配置中心,和springboot无缝衔接并且不需要安装其他软件就可以直接使用,可以实时推送最新的配置文件。Spring提供的AbstractRoutingDataSource用于动态管理数据源,可以动态更新数据源,一般数据库的读写分离也是用这个抽象类实现的。
对Apollo不熟悉的可以先了解一下,GitHub:https://github.com/ctripcorp/apollo
关于AbstractRoutingDataSource,介绍一下我们用到的方法
public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean {
//传入的数据源
private Map targetDataSources;
//拿着子类实现的determineCurrentLookupKey()方法的返回值当做key在这个Map中寻找数据源
private Map resolvedDataSources;
//放入多个数据源
public void setTargetDataSources(Map targetDataSources) {
this.targetDataSources = targetDataSources;
}
//属性设置完成后执行
public void afterPropertiesSet() {