• 使用Properties类动态加载配置文件里的内容


    例如读取配置文件,配置redis,

    列出部分代码如下:

    1.初始化对象:

    public class RedisInst {
        public RedisInst() {
        }
        public static IMyRedis getInstance() {
            FileConf fileConf = FileConf.getInstance();//获取配置文件的内容
            RedisConfig config = new RedisConfig(); //redis配置集
            config.setCluster(fileConf.isCluster());
            config.setHost(fileConf.getHost());
            config.setPort(fileConf.getPort());
            config.setAuth(fileConf.getAuth());
            config.setDataBase(fileConf.getDataBase());
            config.setHoststr(fileConf.getHoststr());
            config.setMaxIdle(fileConf.getMaxIdle());
            config.setMinIdle(fileConf.getMinIdle());
            config.setTestOnBorrow(fileConf.isTestOnBorrow());
            config.setTimeout(fileConf.getTimeout());
            config.setMaxRedirections(fileConf.getMaxRedirections());
            config.setMaxWaitMillis(fileConf.getMaxWaitMillis());
            config.setMaxTotal(fileConf.getMaxTotal());
            config.setSoTimeout(fileConf.getSoTimeout());
            return RedisClient.getInstance(config);
        }
        static {
            FileConf.getInstance();
        }
    }

    2.单例模式构造

    public class FileConf {
        public static Logger logger = Logger.getLogger(FileConf.class.getName());
    
        private static final String REDIS_IS_CLUSTER = "REDIS_IS_CLUSTER";
        private static final String REDIS_MAX_ACTIVE = "REDIS_MAX_ACTIVE";
        private static final String REDIS_MAX_IDLE = "REDIS_MAX_IDLE";
        private static final String REDIS_MIN_IDLE = "REDIS_MIN_IDLE";
        private static final String REDIS_TIMEOUT = "REDIS_TIMEOUT";
        private static final String REDIS_HOST = "REDIS_HOST";
        private static final String REDIS_PORT = "REDIS_PORT";
        private static final String REDIS_PWD = "REDIS_PWD";
        private static final String REDIS_DATABASE = "REDIS_DATABASE";
        private static final String REDIS_TESTONBORROW = "TESTONBORROW";
        private static final String REDIS_MAX_WAIT = "REDIS_MAX_WAIT";
        private static final String REDIS_HOST_LIST = "REDIS_HOST_LIST";
        private static final String REDIS_SOTIMEOUT = "REDIS_SOTIMEOUT";
        private static final String REDIS_MAX_REDIRECTIONS = "REDIS_MAX_REDIRECTIONS";
    
    
        private String REDIS_CONF_FILE = "redis_config.properties";
        private boolean isCluster = false;
        private int timeout = 5000;
        private int maxTotal = 5;
        private int maxIdle = 2;
        private String hoststr = "127.0.0.1:6379";
        private int soTimeout = 5000;
        private int maxRedirections = 6;
        private int minIdle = 10;
        private String host = "127.0.0.1";
        private String auth;
        private long maxWaitMillis = 10000L;
        private int port = 6379;
        private int dataBase = 0;
        private static final Object initLock = new Object();
        private static volatile FileConf instance = null;
        private boolean testOnBorrow = false;
    
        private FileConf() {
            this.loadProperties();
        }
    
        public static FileConf getInstance() {
            if (null == instance) {
                Object var0 = initLock;
                synchronized(initLock) {
                    if (null == instance) {
                        instance = new FileConf();
                    }
                }
            }
            return instance;
        }
    
        public void reloadProperties(String confFileName) {
            this.REDIS_CONF_FILE = confFileName;
            this.loadProperties();
        }
    
        private void loadProperties() {
            Object stream = null;
            try {
                File f = new File(System.getProperty("user.dir") + File.separator + this.REDIS_CONF_FILE);
                if (f.exists()) {
                    stream = new BufferedInputStream(new FileInputStream(f));
                } else {
                    stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(this.REDIS_CONF_FILE);
                }
                Properties props = new Properties();
                props.load((InputStream)stream);
                this.maxTotal = Integer.parseInt(props.getProperty("REDIS_MAX_ACTIVE", "" + this.maxTotal).trim());
                this.maxIdle = Integer.parseInt(props.getProperty("REDIS_MAX_IDLE", "" + this.maxIdle).trim());
                this.minIdle = Integer.parseInt(props.getProperty("REDIS_MIN_IDLE", "" + this.minIdle).trim());
                this.maxWaitMillis = (long)Integer.parseInt(props.getProperty("REDIS_MAX_WAIT", "" + this.maxWaitMillis).trim());
                this.timeout = Integer.parseInt(props.getProperty("REDIS_TIMEOUT", "" + this.timeout).trim());
                this.host = props.getProperty("REDIS_HOST", "Cluster").trim();
                String[] ipport = this.host.split(":");
                if (ipport != null && ipport.length > 1) {
                    this.host = ipport[0];
                    this.port = Integer.parseInt(ipport[1]);
                } else {
                    this.port = Integer.parseInt(props.getProperty("REDIS_PORT", "" + this.port).trim());
                }
                this.auth = props.getProperty("REDIS_PWD");
                this.isCluster = Integer.parseInt(props.getProperty("REDIS_IS_CLUSTER", "1").trim()) == 1;
                this.hoststr = props.getProperty("REDIS_HOST_LIST", "Cluster").trim();
                this.soTimeout = Integer.parseInt(props.getProperty("REDIS_SOTIMEOUT", "" + this.soTimeout).trim());
                this.maxRedirections = Integer.parseInt(props.getProperty("REDIS_MAX_REDIRECTIONS", "" + this.maxRedirections).trim());
                this.dataBase = Integer.parseInt(props.getProperty("REDIS_DATABASE", "" + this.dataBase).trim());
    
            } catch (Exception var12) {
                throw new RuntimeException(var12);
            } finally {
                if (null != stream) {
                    try {
                        ((InputStream)stream).close();
                    } catch (IOException var11) {
                        ;
                    }
                }
            }
        }
    
        public boolean isCluster() {
            return isCluster;
        }
    
        public void setCluster(boolean cluster) {
            isCluster = cluster;
        }
    
        public int getTimeout() {
            return timeout;
        }
    
        public void setTimeout(int timeout) {
            this.timeout = timeout;
        }
    
        public int getMaxTotal() {
            return maxTotal;
        }
    
        public void setMaxTotal(int maxTotal) {
            this.maxTotal = maxTotal;
        }
    
        public int getMaxIdle() {
            return maxIdle;
        }
    
        public void setMaxIdle(int maxIdle) {
            this.maxIdle = maxIdle;
        }
    
        public String getHoststr() {
            return hoststr;
        }
    
        public void setHoststr(String hoststr) {
            this.hoststr = hoststr;
        }
    
        public int getSoTimeout() {
            return soTimeout;
        }
    
        public void setSoTimeout(int soTimeout) {
            this.soTimeout = soTimeout;
        }
    
        public int getMaxRedirections() {
            return maxRedirections;
        }
    
        public void setMaxRedirections(int maxRedirections) {
            this.maxRedirections = maxRedirections;
        }
    
        public int getMinIdle() {
            return minIdle;
        }
    
        public void setMinIdle(int minIdle) {
            this.minIdle = minIdle;
        }
    
        public String getHost() {
            return host;
        }
    
        public void setHost(String host) {
            this.host = host;
        }
    
        public String getAuth() {
            return auth;
        }
    
        public void setAuth(String auth) {
            this.auth = auth;
        }
    
        public long getMaxWaitMillis() {
            return maxWaitMillis;
        }
    
        public void setMaxWaitMillis(long maxWaitMillis) {
            this.maxWaitMillis = maxWaitMillis;
        }
    
        public int getPort() {
            return port;
        }
    
        public void setPort(int port) {
            this.port = port;
        }
    
        public int getDataBase() {
            return dataBase;
        }
    
        public void setDataBase(int dataBase) {
            this.dataBase = dataBase;
        }
    
        public boolean isTestOnBorrow() {
            return testOnBorrow;
        }
    
        public void setTestOnBorrow(boolean testOnBorrow) {
            this.testOnBorrow = testOnBorrow;
        }
    }
  • 相关阅读:
    cereal:C++实现的开源序列化库
    随笔
    我们一起成长
    青岛近代历史和文化资料整理
    Codeforces Round #580 (Div. 2)-D. Shortest Cycle(思维建图+dfs找最小环)
    CodeForces
    PAT甲级1151(由前序和中序确定LCA)
    记录使用vs code两天的心得
    AcWing 285. 没有上司的舞会(树形dp入门)
    POJ-3255-Roadblocks(次短路的另一种求法)
  • 原文地址:https://www.cnblogs.com/zyanrong/p/12738555.html
Copyright © 2020-2023  润新知