Springboot动态获取配置文件信息存入Map

本文介绍如何在Springboot中动态读取配置文件中的数据库信息,并存入Map,进而构造DataSource对象。通过使用@ConfigurationProperties和动态注入Bean,实现了配置文件中数据库数量变化时,系统无需修改代码即可自动加载所有DB。
摘要由CSDN通过智能技术生成

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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值