構成ファイルを読み取るときに、通常のJavaクラスを作成すると、呼び出されたときに複数回ロードおよび実行される場合があります。ただし、設定ファイルや属性の読み込みなどのデータは、事前に設定してあり、頻繁に変更することはありません。一度読み込むだけで、シングルトンモードが利用できます。
この機能を実現します。
package com.test.connect.hive;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Objects;
import java.util.Properties;
public class HiveResourceInfo {
private static HiveResourceInfo resourceInfo=null;
private static Properties prop=null;
private HiveResourceInfo(){}
public static synchronized Properties getHiveConf() throws Exception {
if(null == resourceInfo){
resourceInfo=new HiveResourceInfo();
InputStream inputStream = HiveResourceInfo.class
.getClassLoader()
.getResourceAsStream("connInfo/hive/hiveConf.properties");
if (Objects.isNull(inputStream)) {
throw new Exception("can not read connInfo/hive/hiveConf.properties");
}
if(null == prop){
prop=new Properties();
}
prop.load(new InputStreamReader(inputStream,"UTF-8"));
}
return prop;
}
}
注:ローカル読み取りファイルとサーバーのパスは異なる場合があります。さらに「/」を追加する必要があります。