springboot讀取 yaml或者properties文件幾種方式


方法一.可以專門寫一個工具類讀取所有非application的文件(單列模式)(用一個Map來保存所有配置文件)

      類工具代碼如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class ConfigPropertyUtil {

    private static final Logger logger = LoggerFactory.getLogger(ConfigPropertyUtil.class);
    private static Map<String,ConfigPropertyUtil> configPropertyMap = new HashMap<String,ConfigPropertyUtil>();
    private Properties properties = null;

    public static ConfigPropertyUtil getInstance(String propertyFileName){
        if(!configPropertyMap.containsKey(propertyFileName)){
            synchronized (ConfigPropertyUtil.class){
                if(!configPropertyMap.containsKey(propertyFileName)){
                    ConfigPropertyUtil configPropertyUtil = new ConfigPropertyUtil(propertyFileName);
                    configPropertyMap.put(propertyFileName, configPropertyUtil);
                }
            }
        }
        return configPropertyMap.get(propertyFileName);
    }

    private ConfigPropertyUtil(String propertyFileName){
        init(propertyFileName);
    }

    private void init(String propertyFileName){
        properties = new Properties();
        InputStream inputStream = ConfigPropertyUtil.class.getClassLoader().getResourceAsStream(propertyFileName);
        if(inputStream != null) {
            try {
                properties.load(new InputStreamReader(inputStream,ConstantUtil.CHARSET_VALUE));
            } catch (IOException e) {
                logger.error(String.format("config.properties file not found"));
                e.printStackTrace();
            }
        }
    }

    public String getPropertyVal(String key){
        return this.properties.getProperty(key);
    }

    public Integer getIntPropertyVal(String key){
        return Integer.parseInt(this.getPropertyVal(key));
    }

}

 

方法二、@Value注解讀取方式

方法三、Environment讀取方式(所有加載出來的配置都可以通過Environment注入獲取到。只在加載進入java的classpath路徑下)

方法四、@PropertySource+@ConfigurationProperties注解讀取方式

方法五、@PropertySource+@Value注解讀取方式

 

參考:https://www.jianshu.com/p/982e36f42c67


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM