Java代碼讀取properties配置文件

来源:https://www.cnblogs.com/LoginX/archive/2023/05/02/Login_X72.html
-Advertisement-
Play Games

讀取properties配置文件 package com.easycrud.utils; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.Map; ...


讀取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: [email protected]
 * @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

Properties 繼承於 Hashtable。表示一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字元串。

ConcurrentHashMap

HashTable是一個線程安全的類,它使用synchronized來鎖住整張Hash表來實現線程安全,即每次鎖住整張表讓線程獨占,相當於所有線程進行讀寫時都去競爭一把鎖,導致效率非常低下。ConcurrentHashMap可以做到讀取數據不加鎖,並且其內部的結構可以讓其在進行寫操作的時候能夠將鎖的粒度保持地儘量地小,允許多個修改操作併發進行,其關鍵在於使用了鎖分段技術。它使用了多個鎖來控制對hash表的不同部分進行的修改。對於JDK1.7版本的實現, ConcurrentHashMap內部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的Hashtable,它們有自己的鎖。只要多個修改操作發生在不同的段上,它們就可以併發進行。JDK1.8的實現降低鎖的粒度,JDK1.7版本鎖的粒度是基於Segment的,包含多個HashEntry,而JDK1.8鎖的粒度就是HashEntry(首節點)。

static

static代碼塊一般用於初始化類中的靜態變數,該靜態代碼塊在類載入過程中的初始化階段執行,並且只執行一次。

InputStream

位元組輸入流。

try...cache...finally

try{

​ 可能發生異常的代碼

}catch(可能發生的異常類型 異常對象名){

​ 當前異常類型的處理方式

}finally{

​ 一定要執行的代碼

}

IOException

IOException 是在使用流、文件和目錄訪問信息時引發的異常的基類

e.printStackTrace()

在命令行列印異常信息在程式中出錯的位置及原因。

Class.getClassLoader().getResourceAsStream()

Class是當前類的Class對象,Class.getClassLoader()是獲取當前類的類載入器。類載入器的大概作用是當需要使用一個類時,載入該類的".class"文件,並創建對應的class對象,將class文件載入到虛擬機的記憶體。getResourceAsStream()是獲取資源的輸入流。類載入器預設是從classPath路徑載入資源。

load()

Properties的方法是逐行讀取properties配置文件,分隔成兩個字元串key和value,將他們放進Properties對象中。

Iterator

迭代器 it 的三個基本操作是 next 、hasNext 和 remove。

調用 it.next() 會返回迭代器的下一個元素,並且更新迭代器的狀態。

調用 it.hasNext() 用於檢測集合中是否還有元素。

調用 it.remove() 將迭代器返回的元素刪除。

keySet()

如果有一個Map對象,可以使用 map.keySet()方法獲取所有的key值。

A=xxx.iterator()

獲取迭代器保存在A中。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • (DML語言) 前言 前面的兩篇文章中,我們已經對MySQL有了基本瞭解。 並且知道了怎麼用工具連接資料庫?怎麼創建資料庫?怎麼創建表? 這一篇呢我們就來看看怎麼在我們創建的表中插入數據、刪除數據和修改數據。也就是上一篇文章中提到的DML 數據操作語言 準備 根據上一章所說的,我們創建一個db_xi ...
  • 功能04-達人探店 5.功能04-達人探店 5.1發佈&查看探店筆記 5.1.1發佈探店筆記 探店筆記類似點評網站的評價,往往是圖文結合。對應的表有兩個: tb_blog:探店筆記表,包含筆記中的標題、文字、圖片等 tb_blog_comments:其他用戶對探店筆記的評價 /*表: tb_blog ...
  • (使用MySQL) 前言 根據上一篇文章【必知必會的MySQL知識】①初探MySQL的內容,想必您對MySQL資料庫有了一個整體的瞭解了,並且應該在自己電腦上已經安裝上了MySQL。 這一篇呢我們來說一說這麼連接上資料庫並且使用它。 啟動MySQL服務 前面MySQL安裝的文章手把手教你安裝MySQ ...
  • html基礎標簽 學習網站:https://www.acwing.com/ 學習查詢網站:https://developer.mozilla.org/zh-CN/ !+tab自動出現框架 1.1 文檔結構 html的所有標簽都為樹形結構,例如: <!DOCTYPE html> <html lang= ...
  • 圖片 png 無損壓縮,尺寸體積要比jpg的大,適合做小圖標 jpg 採用壓縮演算法,有一點失真,比png體積要小,適合做中大圖片 gif 一般是做動圖的 webp 同時支持有損或者無損壓縮,相同質量的圖片,webp具有更小的體積 css的盒子模型 標準盒子模型 margin/border/paddi ...
  • 最近翻開源代碼的時候看到了一種很有意思的switch用法,分享一下。 註意這裡討論的不是typed switch,也就是case語句後面是類型的那種。 直接看代碼: func (s *systemd) Status() (Status, error) { exitCode, out, err := ...
  • Java讀取資料庫表 package com.easycrud.builder; import com.easycrud.utils.PropertiesUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ja ...
  • 在上個世紀的文章中,老周簡單介紹了 QWindow 類的基本使用——包括從 QWindow 類派生和從 QRasterWindow 類派生。 其實,QWindow 類並不是只能充當主視窗用,它也可以嵌套到父級視窗中,變成子級對象。咱們一般稱之為【控制項】。F 話不多講,下麵咱們用實際案例來說明。 這個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...