通过静态代码块读取配置文件配置静态属性

  • Post author:
  • Post category:其他


在项目开发中,通常会将一些经常变动的配置提取出来,做成一个配置类,通过该类的静态属性来引用配置。而在项目上线的时候,为了方便后期运维,将配置写在代码里面的方式是肯定不行的了,这时需要将配置信息提取出来,放到配置文件中。下面是一种采用静态代码块配置静态变量的方法。

java配置类,通过静态变量记录各种属性,在工程的其他方可以很方便的引用,可以根据配置文件里面配置的属性重新设置静态属性,如果没有配置文件则使用代码里面的默认值。


Config .java

package com.utils;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;

public class Config {
    /**是否调试模式*/
    public static boolean isDebug=false;
    /**登陆超时时间*/
    public static long activeTime=5000L;
    /**日志路径**/
    public static String log_path="/default_log/";

    static{
        Properties pro = new Properties();
        InputStreamReader in=null;
            try {
                in=new InputStreamReader(Config.class.getResourceAsStream("/config.properties"),"utf-8");
                pro.load(in);
                isDebug=Boolean.parseBoolean(pro.getProperty("isDebug"));
                activeTime=Long.parseLong(pro.getProperty("activeTime"));
                log_path=pro.getProperty("log_path");
                System.out.println("配置文件读取成功:\n{isDebug:"+isDebug+",activeTime:"+activeTime+",log_path:"+log_path);
            } catch (FileNotFoundException e) {
                System.out.println("找不到配置文件");
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if(in!=null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    }
    public static void main(String []ss){
        System.out.println("开始业务处理!");
    }
}

配置文件,放在项目根路劲下即可


config.properties

isDebug=true
activeTime=20000
log_path=/日志路径/log

运行main方法,可以看到在方法执行之前,各静态属性已经根据配置config.properties中的值进行了赋值,以下是测试输出结果。

配置文件读取成功:
{isDebug:true,activeTime:20000,log_path:/日志路径/log
开始业务处理!



版权声明:本文为gfdgdshhg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。