ddpush 學習之路 4 PropertyUtil.java
阿新 • • 發佈:2019-01-25
現在。我們來解析 ddpush的第三個類 PropertyUtil.java
我們現在是解析ddpush的第三個類。這三個類都在ddpush的 org.ddpush.im.util 包中。我查看了一下ddpush的server端的程式碼。加上兩個example類一共只有26個, 我們現在解析第三個類。還剩下23個類。ddpush 我還剩下23個類就學完了。抱著這樣的心態繼續學習
還是按照慣例,來先上我註釋後的類程式碼, 然後是類的基本使用
public class PropertyUtil {
//預設配置檔名
public static final String DEFAULTSET = "ddpush" ;
//map集合。用來存放Property
protected static HashMap<String,Properties> propertiesSets = new HashMap<String, Properties>();
private PropertyUtil() {}
//將DEFAULTSET配置檔案讀取儲存到map集合中
protected static void init() {
init(DEFAULTSET);
}
/**
* 初始化
* 用來讀取預設的ddpush配置資訊 將讀取到得配置資訊轉換成UTF-8格式
* 並儲存到map集合當中,方便程式中使用
* */
protected static void init(String setName) {
//用配置表文件建立ResourceBundle物件。來解析配置表文件
ResourceBundle rb = ResourceBundle.getBundle(setName);
//建立一個空白的Properties物件。用來儲存讀取的配置表文件的配置資料
Properties properties = new Properties();
//遍歷配置表。得到配置的key value 將value轉換成UTF-8格式
Enumeration<String> eu = rb.getKeys();
while (eu.hasMoreElements()){
String key = eu.nextElement().trim();
String value = rb.getString(key).trim();
try{
value = new String(value.getBytes("ISO8859-1"),"UTF-8");
}catch(Exception e){
e.printStackTrace();
}
//將讀取到得key value 儲存到Properties物件中
properties.put(key.toUpperCase(), value);
}
//將讀取完成的Properties物件用配置檔名作key,儲存到map集合中
propertiesSets.put(setName, properties);
}
/**
* 根據 key 獲取Property配置資訊中得值
* 如果預設DEFAULTSET配置檔案沒有讀取並儲存到map配置資訊集合中。
* 就呼叫init 讀取DEFAULTSET配置檔案
* 然後從map集合找到預設的DEFAULTSET集合中key對應value 並返回
* */
public static String getProperty(String key){
if(propertiesSets.get(DEFAULTSET) == null){
init();
}
return propertiesSets.get(DEFAULTSET).getProperty(key.toUpperCase());
}
//根據key 從DEFAULTSET配置表中獲取 int 型別的值
public static Integer getPropertyInt(String key){
int value = 0;
try{
value = Integer.parseInt(getProperty(key));
}catch(Exception e){
e.printStackTrace();
System.exit(1);
}
return value;
}
//根據key 從DEFAULTSET配置表中獲取 Float 型別的值
public static Float getPropertyFloat(String key){
float value = 0;
try{
value = Float.parseFloat(getProperty(key));
}catch(Exception e){
e.printStackTrace();
System.exit(1);
}
return value;
}
//從傳入的配置檔名的表中 獲取key物件的值
public static String getProperty(String setName, String key){
if(propertiesSets.get(setName) == null){
init(setName);
}
String value = propertiesSets.get(setName).getProperty(key.toUpperCase());
if(value == null){
return "";
}
return value;
}
}
好了,這個類內容比較少。主要是用來讀取properties配置檔案用的 提供了讀取String型別的配置值、Int型別的配置值、Float型別的配置值 同時還給我們提供了一個讀取自定義properties配置檔案的函式 可以從指定的配置檔案表中讀取配置值。
好了。接下來就是對這個類的簡單使用。
//讀取一個配置內容
String createMacStr = getProperty("CREATE_MACHINE_BY_CLIENT");
System.out.println("讀取 CREATE_MACHINE_BY_CLIENT 結果:" + createMacStr);
//讀取一個int型別的配置內容
int tcpPortInt = getPropertyInt("CONSOLE_TCP_PORT");
System.out.println("讀取 CONSOLE_TCP_PORT 結果:" + tcpPortInt);
//讀取一個float型別的配置內容
float cleanMemFloat = getPropertyFloat("CLEANER_AUTO_RUN_MEM_PERCENT");
System.out.println("讀取 CLEANER_AUTO_RUN_MEM_PERCENT 結果:" + cleanMemFloat);
結果如下
讀取 CREATE_MACHINE_BY_CLIENT 結果:YES
讀取 CONSOLE_TCP_PORT 結果:9900
讀取 CLEANER_AUTO_RUN_MEM_PERCENT 結果:0.95
好了 以上就是 ddpush的第三個類PropertyUtil.java的解析和理解。
ddpush一共26個類。我們已經學習了3個類了。還剩23個類。我們就可以基本的學習完ddpush了。
加油!堅持下去,你就能自己寫推送伺服器了。厲不厲害? 肯定厲害! NB不NB? 肯定NB!哈哈哈。
by brok1n 20150317