【工具类】单例+读取配置文件
配置文件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)