Springboot动态获取配置文件信息存入Map
需求描述:多个数据库信息在配置文件里,数据库个数变化的时候,不修改代码就自动加载所有的DB到系统内。
具体做法:需要动态的读取配置文件里的DB信息到Map中,然后动态的构造DataSource对象,放入名为targetDataSources 的Map中,再将其动态注入Bean,完成系统数据库的初始化。这样的好处就是配置文件里的DB增加或减少了,可以不修改代码就自动加载所有的DB到系统内。
test.yml配置文件内容如下:
yml格式的配置信息,datasource里面有三个DB(main,DB-001,DB-002),现将三个DB读取到Map里(注意Map的名字要与配置文件中的名字对应,这里是dataSource),步骤如下:
1.构造一个类,里面的属性名和spring.datasource里的配置项名称要一致,可忽略大小写
/*
* @author ann.an
* @date 2019-07-17
* @description DB属性定义,属性与配置文件中的DB配置项对应,不对应会解析不到的哟*
*/
public class DBInfo {
private String url;
private String userName;
private String passWord;
private int initialSize;
private int maxActive;
private int minIdle;
private String bankId;
public String getBankId() {
return bankId;
}
public void setBankId(String bankId) {
this.bankId = bankId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public int getInitialSize() {
return initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
public int getMinIdle() {
return minIdle;
}
public void se