JavaWeb項目配置化之Properties類的使用


 轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6397370.html

 在項目中的應用見: https://github.com/ygj0930/CoupleSpace

    在我們開發項目時,有很多地方會出現重復的代碼或者日后可能需要修改的代碼,比如:連接數據庫、設置項目編碼格式、設定文件上傳保存目錄等等。重復代碼或許可以用靜態變量來實現全局調用而不必重復出現,但是畢竟是寫死在代碼里的,日后需要修改時還要修改源碼,比較麻煩而且不便於維護。Java給我們提供了Properties類,可以用來解決這些問題。

    Properties類以"key=value"形式保存了一系列的配置信息,其中Key與value都是String類型。這樣,我們可以把需要重復用的信息,或者日后需要修改的信息以配置的形式從源碼中獨立出來。修改時只需修改Properties文件,在源碼中通過properties類對象來讀取信息即可同步到整個項目。下面,介紹一下JavaWeb項目中使用Properties文件使項目配置化。

    一:在項目的src目錄下新建  .properties  后綴名的文件。

    把文件放在src目錄下,在部署時會自動部署到classes目錄下的。放到別處是獲取不到文件的。

    另: Properties文件名首字母不能大寫否則也是找不到文件的。

    二:配置化項目

    用文本編輯文件或者在myeclipse中打開這個配置文件,把項目中可以配置化的信息提取出來,以 key=value  形式書寫。注意一行一個

    一般可以配置化的信息有:項目中重復出現的語句,日后需要修改的信息等。比如:數據庫驅動、數據庫url、數據庫名以及密碼、項目編碼格式、文件上傳路徑、臨時文件保存路徑等等。

   

    三:在項目中獲取配置信息

    在properties文件中配置好信息后,在項目中可以通過Properties類對象來讀取信息。分四步走:

    1:新建properties對象

    2:創建輸入流打開properties文件。

    3:properties對象從輸入流加載配置信息

    4:通過properties.getProperties(“key”)獲取具體配置信息

    比如:

Properties properties;
    public ArticleDAO() {
        super();
        properties=new Properties();
        InputStream in=ArticleDAO.class.getClassLoader().getResourceAsStream("config.properties");
        try {
            properties.load(in);
Class.forName(properties.getProperty("dbDriver"));
            con = DriverManager.getConnection(
                    properties.getProperty("dbUrl"), properties.getProperty("dbName"), properties.getProperty("dbPass"));
       } catch (IOException e) {  
e.printStackTrace(); }
}

 

     這里要注意三點:

     1:

 InputStream in=當前類名.class.getClassLoader().getResourceAsStream("config.properties");

     2:

InputStream in=當前類名.(如果是Java App,對應src;如果是Java Web App,對應class).getClassLoader().getResourceAsStream("config.properties");

    3:創建輸入流時,Test.class.getClassLoader().getResourceAsStream()方法直接獲得字節輸入流,所以不用考慮路徑中是否包含中文的問題,如果是通過Test.class.getClassLoader().getResource()方法,因為該方法返回值是URL,如果項目的目錄中有中文命名,則獲得的URL會出現亂碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM