天天看點

properties檔案擷取工具類

使用場景:

properties通過@Value注解方式在項目啟動後未順利加載到項目中,為解決此問題引入的
           

使用姿勢:

/**
 * properties檔案擷取工具類
 */
public class PropertyUtil {

    private static Properties props;
    static {
        loadProps();
    }

    synchronized static private void loadProps(){
        System.out.println("開始加載proxy.properties檔案内容.......");
        props = new Properties();
        InputStream in = null;
        try {
            // 第一種,通過類加載器進行擷取properties檔案流-->
            in = PropertyUtil.class.getClassLoader().getResourceAsStream("config/proxy.properties");
            // 第二種,通過類進行擷取properties檔案流-->
            //in = PropertyUtil.class.getResourceAsStream("/config/proxy.properties");
            props.load(in);
        } catch (FileNotFoundException e) {
            System.out.println("proxy.properties檔案未找到");
        } catch (IOException e) {
            System.out.println("出現IOException");
        } finally {
            try {
                if(null != in) {
                    in.close();
                }
            } catch (IOException e) {
                System.out.println("proxy.properties檔案流關閉出現異常");
            }
        }
        System.out.println("加載properties檔案内容完成...........");
        System.out.println("properties檔案内容:" + props);
    }

    /**
     * 根據key擷取配置檔案中的屬性
     */
    public static String getProperty(String key){
        if(null == props) {
            loadProps();
        }
        return props.getProperty(key);
    }

    /**
     * 根據key擷取配置檔案中的屬性,當為null時傳回指定的預設值
     */
    public static String getProperty(String key, String defaultValue) {
        if(null == props) {
            loadProps();
        }
        return props.getProperty(key, defaultValue);
    }
}