java项目利用PropertiesUtil类配置化

目录
1、实现思路
2、源码展示
3、调用例子
4、配置文件结构
5、总结

问题:
在项目中我们可能会经常遇到下面这种情况,比如我们需要和FTP服务器进行一个对
接,以前我们会直接把FTP服务器地址直接在代码中写死,这样就会出现一个问题,如果一个
项目中在多处用到了这个地址,将来需要修改的话,修改起来会非常麻烦。


解决思路
我们可以把配置抽取出来的,把地址等这类信息写入一个配置文件中,然后用一个类专门去
管理这个配置文件,我称这个类为PropertiesUtil类。

1、实现思路

1.在编译阶段读取配置文件
2. 对外提供根据key获取对应的value

2、源码展示

package com.mywebapp.util;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

/**
 * Created by xiao
 */
public class PropertiesUtil {

    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);

    private static Properties props;
    //静态代码块>>普通代码块>>构造代码块
    static {
        String fileName = "mywebapp.properties";
        props = new Properties();
        try {
            //读取propertiesUtil类的配置
            //利用反射加载类信息,获取配置文件的文件流,并指点编码格式
            props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName),"UTF-8"));
        } catch (IOException e) {
            logger.error("配置文件读取异常",e);
        }
    }

    public static String getProperty(String key){
        String value = props.getProperty(key.trim());
        if(StringUtils.isBlank(value)){
            return null;
        }
        return value.trim();
    }

    public static String getProperty(String key,String defaultValue){
        //提供默认值的方法,如果在配置文件中找不到对应的key,就返回参数中的默认值
        String value = props.getProperty(key.trim());
        if(StringUtils.isBlank(value)){
            value = defaultValue;
        }
        return value.trim();
    }
}

3、调用例子

String url = PropertiesUtil.getProperty("ftp.server.http.prefix");

4、配置文件结构

配置文件是以.properties 为后缀,key=value的形式作为内容的,如下所示

ftp.server.ip=localhost
ftp.user=xiao
ftp.pass=********
ftp.server.http.prefix=http://img.com/

5、总结

 这种配置化的可以方便我们对项目的维护,提高代码的重用性,而且这种思想也适用于其他的场
 景,如把项目中重用度高的代码封装成一个util类,直接通过类调用。

PS:博文中如有什么不对的地方恳请大家指出,谢谢~

你可能感兴趣的:(java)