您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么使用Java代碼讀取properties配置文件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用Java代碼讀取properties配置文件”吧!
package com.easycrud.utils; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; /** * @BelongsProject: EasyCrud * @BelongsPackage: com.easycrud.utils * @Author: xpx * @Email: 2436846019@qq.com * @CreateTime: 2023-05-02 16:05 * @Description: 讀取properties配置文件工具類 * @Version: 1.0 */ public class PropertiesUtils { private static Properties props = new Properties(); private static Map<String,String> PROPER_MAP = new ConcurrentHashMap<String, String>(); /** * 項目初始化時就去讀取配置文件 */ static { InputStream is = null; try{ is = PropertiesUtils.class.getClassLoader().getResourceAsStream("application.properties"); props.load(is); Iterator<Object> iterator = props.keySet().iterator(); while (iterator.hasNext()){ String key = (String) iterator.next(); PROPER_MAP.put(key,props.getProperty(key)); } }catch (Exception e){ }finally { if (is != null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 對外提供方法通過key取值 * @param key * @return */ public static String getString(String key) { return PROPER_MAP.get(key); } /** * 測試能否成功取值 * @param args */ public static void main(String[] args) { System.out.println("測試打印:"+getString("db.driver.name")); } }
Properties 繼承于 Hashtable。表示一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字符串。
HashTable是一個線程安全的類,它使用synchronized來鎖住整張Hash表來實現(xiàn)線程安全,即每次鎖住整張表讓線程獨占,相當于所有線程進行讀寫時都去競爭一把鎖,導致效率非常低下。ConcurrentHashMap可以做到讀取數(shù)據(jù)不加鎖,并且其內(nèi)部的結(jié)構(gòu)可以讓其在進行寫操作的時候能夠?qū)㈡i的粒度保持地盡量地小,允許多個修改操作并發(fā)進行,其關鍵在于使用了鎖分段技術(shù)。它使用了多個鎖來控制對hash表的不同部分進行的修改。對于JDK1.7版本的實現(xiàn), ConcurrentHashMap內(nèi)部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的Hashtable,它們有自己的鎖。只要多個修改操作發(fā)生在不同的段上,它們就可以并發(fā)進行。JDK1.8的實現(xiàn)降低鎖的粒度,JDK1.7版本鎖的粒度是基于Segment的,包含多個HashEntry,而JDK1.8鎖的粒度就是HashEntry(首節(jié)點)。
static代碼塊一般用于初始化類中的靜態(tài)變量,該靜態(tài)代碼塊在類加載過程中的初始化階段執(zhí)行,并且只執(zhí)行一次。
字節(jié)輸入流。
try{
可能發(fā)生異常的代碼
}catch(可能發(fā)生的異常類型 異常對象名){
當前異常類型的處理方式
}finally{
一定要執(zhí)行的代碼
}
IOException 是在使用流、文件和目錄訪問信息時引發(fā)的異常的基類
在命令行打印異常信息在程序中出錯的位置及原因。
Class是當前類的Class對象,Class.getClassLoader()是獲取當前類的類加載器。類加載器的大概作用是當需要使用一個類時,加載該類的".class"文件,并創(chuàng)建對應的class對象,將class文件加載到虛擬機的內(nèi)存。getResourceAsStream()是獲取資源的輸入流。類加載器默認是從classPath路徑加載資源。
Properties的方法是逐行讀取properties配置文件,分隔成兩個字符串key和value,將他們放進Properties對象中。
迭代器 it 的三個基本操作是 next 、hasNext 和 remove。
調(diào)用 it.next() 會返回迭代器的下一個元素,并且更新迭代器的狀態(tài)。
調(diào)用 it.hasNext() 用于檢測集合中是否還有元素。
調(diào)用 it.remove() 將迭代器返回的元素刪除。
如果有一個Map對象,可以使用 map.keySet()方法獲取所有的key值。
獲取迭代器保存在A中。
到此,相信大家對“怎么使用Java代碼讀取properties配置文件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。