【工具类】单例+读取配置文件

【工具类】单例+读取配置文件

配置文件kafka-server-config.properties

#broker
bootstrap.servers = bigdatacdh1:9092,bigdatacdh2:9092,bigdatacdh3:9092
#zk.connect = bigdatacdh1:2181,bigdatacdh2,bigdatacdh3:2181
#key.serializer = org.apache.kafka.common.serialization.StringDeserializer
#value.serializer = org.apache.kafka.common.serialization.StringDeserializer
key.serializer = org.apache.kafka.common.serialization.StringSerializer
value.serializer = org.apache.kafka.common.serialization.StringSerializer

resource中的目录结构与配置文件路径之间的关系。

String path =“kafka/kafka-server-config.properties”;
目录结构

工具类

package com.cdh.bigdata.common.config;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


public class ConfigUtil {
    private static final Logger LOG = Logger.getLogger(ConfigUtil.class);

    //定义一个私有静态变量
    private static volatile ConfigUtil configUtil;

    //私有构造方法
    private ConfigUtil(){}

    //提供一个对外公用方法
    public static ConfigUtil getInstance(){
        //双重否定
        if(configUtil == null){
            //构造
            synchronized (ConfigUtil.class){
                if(configUtil == null){
                    configUtil = new ConfigUtil();
                }
            }
        }
        return configUtil;
    }

    /**
     *
     * @param path  配置文件的路径
     * @return
     */
    public Properties getProperties(String path){
        Properties properties = new Properties();

        try {
            InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(path);
            properties.load(resourceAsStream);

        } catch (IOException e) {
           LOG.error("配置文件"+path+"读取失败",e);
        }
        return properties;
    }

    public static void main(String[] args) {
        String path ="kafka/kafka-server-config.properties";
        Properties properties = ConfigUtil.getInstance().getProperties(path);
        properties.keySet().forEach(key->{
            System.out.println(key);
            System.out.println(properties.getProperty(key.toString()));
        });
    }
}

注意:要保证common【Moudle】的pom文件中的依赖能够与resource【Moudle】相互联系,否则会报错,空指针异常。
(即要保证在common中能够定位到resource)

Exception in thread “main” java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:434)
at java.util.Properties.load0(Properties.java:353)
at java.util.Properties.load(Properties.java:341)
at com.cdh.bigdata.common.config.ConfigUtil.getProperties(ConfigUtil.java:46)
at com.cdh.bigdata.common.config.ConfigUtil.main(ConfigUtil.java:56)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值