最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 如何讀取properties文件

 更新時(shí)間:2020年11月05日 10:29:55   作者:Marydon  
這篇文章主要介紹了java 如何讀取properties文件,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

1.情景展示

  將要訪問的接口地址等常用的配置添加到properties文件中,比直接寫到j(luò)ava類中的好處在于:

  當(dāng)我們需要修改相應(yīng)配置時(shí),直接修改properties文件,重啟tomcat即可,避免了重新編譯引用該配置的java文件,同時(shí),也便于項(xiàng)目的維護(hù)。

方式一

  通過spring的工具類PropertiesLoaderUtils來實(shí)現(xiàn)對(duì)properties文件的解析

  所需jar包:spring的核心jar包,spring-core-版本號(hào).jar

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.core.io.support.PropertiesLoaderUtils;

/**
 * 借助spring讀取Properties文件
 * @explain Spring 提供的 PropertiesLoaderUtils
 * 允許您直接通過基于類路徑的文件地址加載屬性資源 最大的好處就是:實(shí)時(shí)加載配置文件,修改后立即生效,不必重啟
 * @author Marydon
 * @creationTime 2018年5月23日上午9:58:59
 * @version 1.0
 * @since
 * @email marydon20170307@163.com
 */
public class PropertiesUtils {

  /**
   * 讀取properties文件
   * @param fileName properties文件名及所在路徑
   * @explain 參數(shù)說明
   * 1.傳遞的參數(shù)不是properties類型文件,不會(huì)報(bào)錯(cuò),返回的是空Map;
   * 2.傳遞的參數(shù)是根本不存在的properties文件,也不會(huì)報(bào)錯(cuò),返回的是空Map;
   * 3.傳遞的參數(shù)可以帶路徑,可以正常解析到
   * @return
   */
  public static Map<String, String> readProperties(String fileName) {
    Map<String, String> resultMap = new HashMap<String, String>();
    try {
      Properties props = PropertiesLoaderUtils.loadAllProperties(fileName);
      for (Object key : props.keySet()) {
        resultMap.put(key.toString(), props.get(key).toString());
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return resultMap;
  }

  /**
   * @param args
   */
  public static void main(String[] args) {
//    Map map = readProperties("base/web/imageInfo/fileRootDirectories.properties");
    Map map = readProperties("fileRootDirectories.properties");
    for (Object key : map.keySet()) {
      System.out.println(key.toString() + "=" + map.get(key).toString());
    }
    // 打印結(jié)果
    // fileRootPath=uploadFiles
  }

}

  這種方式的缺點(diǎn)在于:

  每次調(diào)用都要重新解析對(duì)應(yīng)的properties文件,所以,我們可以在項(xiàng)目啟動(dòng)的時(shí)候,就把該文件加載到內(nèi)存中(一次加載解析,永久使用)。

方式二

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * properties文件工具類
 * @description
 * 在該類被加載的時(shí)候,它就會(huì)自動(dòng)讀取指定位置的配置文件內(nèi)容并保存到靜態(tài)屬性中,高效且方便,一次加載,可多次使用
 * @author: Marydon
 * @date: 2020年07月13日 0013 16:04
 */
public class PropertyUtils_old {
   private static Logger logger = LoggerFactory.getLogger(PropertyUtils_old.class);
   // 待解析的properties文件名稱
   private static final String FILE_NAME = "bill.properties";
   // 用于接收解析過properties文件
   private static Properties props;
 
   // 靜態(tài)代碼塊:在該類被加載到內(nèi)容中時(shí),該代碼塊會(huì)執(zhí)行
   static {
       // 靜態(tài)代碼塊執(zhí)行時(shí)將要執(zhí)行的方法
       loadPropertiesFile();
   }
 
   synchronized static private void loadPropertiesFile() {
       logger.debug("開始加載properties文件內(nèi)容.......");
       props = new Properties();
       InputStream in = null;
       try {
           // 方式一:通過類加載器進(jìn)行獲取properties文件流(不用添加路徑)
           in = PropertyUtils_old.class.getClassLoader().getResourceAsStream(FILE_NAME);
           // 方式二:通過類進(jìn)行獲取properties文件流(需要加/)
           // in = PropertyUtils.class.getResourceAsStream("/bill.properties");
           props.load(in);
       } catch (NullPointerException e) {
           logger.error("bill.properties文件未找到!");
       } catch (IOException e) {
           logger.error("出現(xiàn)IOException!");
       } finally {
           try {
               if (null != in) {
                   in.close();
               }
           } catch (IOException e) {
               logger.error("bill.properties文件流關(guān)閉出現(xiàn)異常");
           }
       }
       logger.info("加載properties文件內(nèi)容完成...........");
       logger.info("properties文件內(nèi)容:" + props);
   }
 
   /*
    * 獲取properties文件中指定key的value
    * @date: 2020年07月13日 0013 16:17
    * @param: key
    * @return: java.lang.String
    */
   public static String getProperty(String key) {
       if (null == props) {
           loadPropertiesFile();
       }
       return props.getProperty(key);
   }
 
   /*
    * 獲取properties文件中指定key的value
    * @date: 2020年07月13日 0013 16:17
    * @param: key
    * @param: defaultValue
    * @return: java.lang.String
    */
   public static String getProperty(String key, String defaultValue) {
       if (null == props) {
           loadPropertiesFile();
       }
       return props.getProperty(key, defaultValue);
   }
}

  測(cè)試

public static void main(String[] args) {
    System.out.println(getProperty("bill.czInterfaceAddress"));
}

  方式一也可以按照方式二的形式,來達(dá)到一次加載,永久使用的效果。

以上就是java 如何讀取properties文件的詳細(xì)內(nèi)容,更多關(guān)于java 讀取properties文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MyBatis  Properties及別名定義實(shí)例詳解

    MyBatis Properties及別名定義實(shí)例詳解

    這篇文章主要介紹了MyBatis Properties及別名定義實(shí)例詳解,需要的朋友可以參考下
    2017-08-08
  • Java日志logback的使用配置和logback.xml解讀

    Java日志logback的使用配置和logback.xml解讀

    這篇文章主要介紹了Java日志logback的使用配置和logback.xml解讀,具有很好的價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Spring中@RequestMapping、@RestController和Postman

    Spring中@RequestMapping、@RestController和Postman

    本文介紹了Spring框架中常用的@RequestMapping和@RestController注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Spring集成MongoDB的兩種方法實(shí)例

    Spring集成MongoDB的兩種方法實(shí)例

    最近使用到了Spring框架,考慮到數(shù)據(jù)的格式并非有固定的字段格式,因此考慮到使用MongoDB非關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),所以這篇文章主要給大家介紹了Spring集成MongoDB的兩種方法,需要的朋友可以參考下
    2021-09-09
  • IDEA類存在但找不到的解決辦法

    IDEA類存在但找不到的解決辦法

    本文主要介紹了IDEA類存在但找不到的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java?8函數(shù)式接口之BinaryOperator使用示例詳解

    Java?8函數(shù)式接口之BinaryOperator使用示例詳解

    這篇文章主要大家介紹了Java?8函數(shù)式接口之BinaryOperator,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • WMTS中TileMatrix與ScaleDenominator淺析

    WMTS中TileMatrix與ScaleDenominator淺析

    這篇文章主要為大家介紹了WMTS中TileMatrix與ScaleDenominator淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java如何利用線程池和Redis實(shí)現(xiàn)高效數(shù)據(jù)入庫(kù)

    Java如何利用線程池和Redis實(shí)現(xiàn)高效數(shù)據(jù)入庫(kù)

    文章介紹了如何利用線程池和Redis在高并發(fā)環(huán)境中實(shí)現(xiàn)高效的數(shù)據(jù)入庫(kù),通過將數(shù)據(jù)首先存儲(chǔ)在Redis緩存中,然后利用線程池定期批量入庫(kù)處理,確保系統(tǒng)的性能和穩(wěn)定性,主要組件包括BatchDataStorageService、CacheService和RedisUtils等
    2025-02-02
  • Springboot優(yōu)化內(nèi)置服務(wù)器Tomcat優(yōu)化方式(underTow)

    Springboot優(yōu)化內(nèi)置服務(wù)器Tomcat優(yōu)化方式(underTow)

    本文詳細(xì)介紹了Spring Boot中Tomcat和Undertow服務(wù)器的配置和優(yōu)化,包括初始線程數(shù)、最大線程數(shù)、最小備用線程數(shù)、最大請(qǐng)求數(shù)等參數(shù)的優(yōu)化建議,以及在高并發(fā)場(chǎng)景下Undertow相對(duì)于Tomcat的優(yōu)勢(shì)
    2024-12-12
  • Springboot整合kafka的示例代碼

    Springboot整合kafka的示例代碼

    這篇文章主要介紹了Springboot整合kafka的示例代碼,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

弥勒县| 葫芦岛市| 叶城县| 延津县| 凤冈县| 阿克苏市| 黄大仙区| 五家渠市| 新绛县| 剑阁县| 铁力市| 吉隆县| 常熟市| 北票市| 射洪县| 石景山区| 延长县| 都昌县| 前郭尔| 镇雄县| 孟州市| 简阳市| 神池县| 云梦县| 喀喇沁旗| 乌恰县| 宽城| 阿荣旗| 桂平市| 凤冈县| 临猗县| 讷河市| 永州市| 黔东| 西丰县| 高唐县| 云梦县| 宜城市| 尖扎县| 宁国市| 宜丰县|