2012-03-26 62 views
5

我創建屬性文件數據庫connection..I已經給出了文件的路徑和我使用的函數存儲性能:使用屬性的文件

public void setProperty(String key, String value) { 
    properties.setProperty(key, value); 
} 

我已經設置的屬性,如:

"url","jdbc:mysql://localhost:3306/";"dbname","example";"user", "postgres";"Pass","123"; 

我的問題是,當我在另一個系統中使用我的應用程序時,這個屬性文件是如何有用的(其實我已經通過了「java中的屬性文件」教程,但我無法理解它們是如何使用的)。

在新系統中用戶名和密碼會不同,所以這個文件怎麼會有用?

+0

你可以使多個屬性文件在多個系統上使用它們? – 2012-03-26 12:26:10

+0

如果您正在查看java屬性,可以從中獲得更多信息http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html – GustyWind 2012-03-26 12:28:18

+0

但是,我怎麼能知道其他用戶用戶名稱和密碼,我可以指定他創建具有特定名稱的數據庫,但我不能要求他更改mysql的憑據。也是我正在製作我的應用程序的jar文件。因此無法進行硬編碼。 – user10101 2012-03-26 12:31:02

回答

4

在新系統中用戶名和密碼會不同,所以這個文件怎麼會有用?

正是因爲文件可以是在不同的系統不同的是有用的。通過將系統特定的細節放入可在不同系統中更改的文件中,可避免爲每個不同的系統編寫不同的Java代碼。

但我怎麼能知道其他用戶的用戶名和密碼

在場景中你不知道,你有多個解決方案,如:

  • 告訴用戶使用文本編輯器編輯屬性文件,
  • 編碼應用程序的安裝程序以詢問用戶名和密碼,然後在安裝時將它們插入到屬性文件中,或者
  • 提供允許用戶輸入或更新屬性的配置工具或界面。

順便說一句,看起來你已經發明瞭一種自定義屬性的文件格式。你不需要那樣做。 java.util.Properties類提供兩種標準格式和讀寫它們的方法。

+0

很好..什麼是這樣做的?我猜 - 最初設置當程序啓動時的參數和需要時讀取參數並在代碼中使用檢索到的值? – user10101 2012-03-26 12:39:27

+0

@ user10101 - 基本上是。 「屬性」類可以支持所有這些。 – 2012-03-26 12:41:09

+0

感謝您的要點。良好的選擇,我可以做任何其中之一,但這樣做只會改變prop文件中的憑據(在我已經存儲在特定路徑中的prop文件中)..這怎麼會導致更改其他用戶在安裝過程中設置的內部憑證? – user10101 2012-03-26 12:43:43

0

至少據我瞭解,屬性文件的想法是外部的的jar文件。我將描述我的走向 - 基本思想是在打包應用程序時使用相對路徑和始終相同的結構:

  • 使用部署工具創建軟件包,易於部署。 對於此我使用Maven,與自定義組件描述符我提供給maven-assembly-plugin
  • 這樣的特性文件作爲數據庫的配置,在項目結構位於下/ SRC /資源/配置(例如)
  • 在裝配描述符(它創建一個zip文件)中,將/src/resources/config中的所有文件都移動到目錄config中的zip的根目錄 - 所以在/config裏面的zip文件中。 /config應該使用maven-jar-plugin配置或maven-dependency-plugin添加到類路徑中。
  • 主罐位於拉鍊的根級別,和所有其他的依賴關係是在/ lib文件夾(使用行家依賴性-插件)

這樣你運送單個壓縮文件,這具有如下內部結構:

/ 

/config 

/bin 

/lib 

<main jar file with manifest - the manifest contains all the classpath info - this info is automatically generated by the maven plugins> 

當憑證更改時,您只需編輯屬性文件即可。另一個問題是,如果這是安全的。