欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java加載property文件配置過程解析

 更新時(shí)間:2020年02月13日 08:52:43   作者:偷懶的綠葉  
這篇文章主要介紹了java加載property文件配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了java加載property文件配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1 properties簡介:

properties是一種文本文件,內(nèi)容格式為:

key = value #單行注釋

適合作為簡單配置文件使用,通常作為參數(shù)配置、國際化資源文件使用。

對于復(fù)雜的配置,就需要使用XML、YML、JSON等了

2 java加載Properties:

java加載properties主要通過2個(gè)util包下的工具類: Properties類、 ResourceBundle類

2.1 通過Properties類加載:

Properties類通過load()方法加載配置信息,這個(gè)方法接收一個(gè)輸入流參數(shù):InputStream、Reader。

Properties提供get(String key) 方法讀取指定的配置項(xiàng)。

2.1.1 通過ClassLoader獲取InputStream加載:

該方式只能讀取類路徑下的配置文件

(1)先創(chuàng)建Properties對象

(2)獲取property文件對應(yīng)的輸入流in

(3)使用Properties加載輸入流in

(4)通過Properties.get(key)方法獲取配置,如果配置信息不存在,則返回null

/**
 * 基于ClassLoader讀取properties;
 * 該方式只能讀取類路徑下的配置文件,有局限但是如果配置文件在類路徑下比較方便。
 */
public static void method1() {
   System.out.println("使用ClassLoader方式加載properties");
   Properties properties = new Properties();
   /*
   * 使用ClassLoader加載properties配置文件生成對應(yīng)的輸入流。
   * 使用此種方式,要求property文件必須要放在src目錄下,編譯之后會(huì)被放到class文件相同目錄下。
   * 因?yàn)镃lassLoad的基礎(chǔ)路徑是相對于編譯后class文件所在目錄(可能是bin,classes),如果將properties放在項(xiàng)目根目錄下,使用此種方式可能會(huì)找不到 properties文件
   */
   //必須要以 /開始  , 是在classes文件根目錄下尋找
   InputStream in = PropertiesDemo.class.getResourceAsStream("/properties/a.properties");
   System.out.println(PropertiesDemo.class.getClassLoader().getResource(".").getPath());
   try {
    properties.load(in);
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }finally {
     closeResource(in);
   }
   
   System.out.println(properties.get("name"));
   System.out.println(properties.get("age"));
}

2.1.2 通過構(gòu)建Reader加載:

該方式的優(yōu)點(diǎn)在于可以讀取任意路徑下的配置文件

(1)創(chuàng)建Properties對象

(2)創(chuàng)建一個(gè)Reader,可以指定路徑,不局限于類路徑

(3)使用Properties加載Reader

(4)Properties.get(key)方法讀取配置

/**
 * 使用inputStream讀取配置文件
 * 該方式的優(yōu)點(diǎn)在于可以讀取任意路徑下的配置文件
 */
public static void method2() {
   System.out.println("使用InputStream方式加載properties");
   Properties properties = new Properties();
   BufferedReader reader = null;
   try {
     /*
      * System.getProperty("user.dir"): 獲取項(xiàng)目根路徑, 而后附加配置文件的路徑
     */
     reader = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/properties/a.properties"));
     properties.load(reader);
     System.out.println(properties.get("name"));
     System.out.println(properties.get("age"));
   } catch (FileNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }finally {
     closeResource(reader);
   }
 }

2.2 通過ResourceBundle類加載:

ResourceBundle讀取配置有2種方式:

(1)指定文件路徑 :相對于src、classes的相對路徑

(2)提供InputStream

ResourceBundle提供方法getString(key) 和 getObject(key)讀取配置項(xiàng)
使用路徑加載,不需要指定文件后綴名,且不需要手動(dòng)關(guān)閉相關(guān)資源,比Properties類操作要簡單。

/**
 * 通過ResourceBundle 讀取配置, 此種方式項(xiàng)目Properties要簡單
 * ResourceBundle讀取配置有2種方式: (1)指定文件路徑 (2)提供InputStream
 */
public static void method3() {
  System.out.println("使用ResourceBundle方式加載properties");
  /*
  * (1)直接指定文件路徑:

  * 可以使用相對路徑,從類路徑開始,且不需要指定properties文件的后綴
  */
  ResourceBundle resource = ResourceBundle.getBundle("properties/b");
  System.out.println(resource.getString("name"));
  System.out.println(resource.getString("age"));

 


  try {
   /*
   * (2)通過InputStream加載配置:

   * 通過當(dāng)前類的class實(shí)例,獲取資源輸入流
   */
   resource = new PropertyResourceBundle(PropertiesDemo.class.getResourceAsStream("/properties/a.properties"));
   System.out.println(resource.getString("name"));
   System.out.println(resource.getString("age"));
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 阿里云發(fā)布 Spring Boot 新腳手架工程

    阿里云發(fā)布 Spring Boot 新腳手架工程

    這篇文章主要介紹了阿里云發(fā)布 Spring Boot 新腳手架的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,可以參考下
    2020-04-04
  • 擴(kuò)展tk.mybatis的流式查詢功能實(shí)現(xiàn)

    擴(kuò)展tk.mybatis的流式查詢功能實(shí)現(xiàn)

    mybatis查詢默認(rèn)是一次獲取全部,如果數(shù)據(jù)過于龐大,就會(huì)導(dǎo)致OOM問題,本文就介紹了tk.mybatis 流式查詢,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • 深入Java注解原理Annotation

    深入Java注解原理Annotation

    這篇文章主要介紹了深入Java注解原理Annotation,注解可以附加在package,class,method,field等上面,可相當(dāng)于添加了額外的輔助信息,可以通過反射機(jī)制編程實(shí)現(xiàn)對這些元數(shù)據(jù)的訪問,需要的朋友可以參考下
    2023-10-10
  • IntelliJ IDEA使用maven實(shí)現(xiàn)tomcat的熱部署

    IntelliJ IDEA使用maven實(shí)現(xiàn)tomcat的熱部署

    這篇文章主要介紹了IntelliJ IDEA使用maven實(shí)現(xiàn)tomcat的熱部署,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • request.getRequestURL()等方法得到路徑的區(qū)別及說明

    request.getRequestURL()等方法得到路徑的區(qū)別及說明

    這篇文章主要介紹了request.getRequestURL()等方法得到路徑的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java中的key接口解析

    java中的key接口解析

    這篇文章主要介紹了java中的key接口,有需要的朋友可以參考一下
    2014-01-01
  • SpringMVC 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn)示例

    SpringMVC 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn)示例

    本文主要介紹了SpringMVC 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • maven 指定version不生效的問題

    maven 指定version不生效的問題

    這篇文章主要介紹了maven 指定version不生效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • mybatis Mapper的xml文件中resultType值的使用說明

    mybatis Mapper的xml文件中resultType值的使用說明

    這篇文章主要介紹了mybatis Mapper的xml文件中resultType值的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java解析http協(xié)議字符串的方法實(shí)現(xiàn)

    Java解析http協(xié)議字符串的方法實(shí)現(xiàn)

    本文主要介紹了Java解析http協(xié)議字符串的方法實(shí)現(xiàn),我們探討了如何使用Java解析HTTP協(xié)議字符串,并將其封裝成了一個(gè)HttpRequest類,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評論