![](/img/trans.png)
[英]Java - Best way to store a single value and one piece of corresponding information?
[英]Best way to store MySQL login information in Java
在Java應用程序中存儲MySQL登錄配置設置的最佳方法是什么。
我想在Java中使用MySQL連接並對此感到好奇
主機/數據庫/登錄名/密碼
存儲。 我的程序打算使用多線程,並向每個類寫入固定的登錄信息,看起來並不好。 存儲可以多次使用的身份驗證數據的最佳方法是什么?
例如,在PHP中,通常使用全局變量創建mysqlinfo.php
並包含在每個文件中。 如果某些數據發生更改,則只需修改mysqlinfo.php
。
但是Java呢? 我應該使用全局變量還是應該存儲登錄名/密碼/等。 在每個類的私有字符串中?
如果它是服務器應用程序(在應用程序或Web服務器中運行),則可以使用JNDI DataSource。 或者,您可以將它們存儲在環境變量中。
對於桌面應用程序,您可以使用屬性文件並從中讀取值。 同樣,從環境變量讀取它們是另一種選擇。
答案可能取決於您正在制作的應用程序類型。 由於您提到了php,所以我想您需要一個基於Web的應用程序。 對於基於Web的應用程序,我希望將其用作JNDI數據源。 使用JNDI,您將不會在代碼中存儲任何用戶ID,密碼等。
在Java中,對於全局變量,只需創建一個公共類,然后在其中定義您的全局屬性為static,然后調用該類。
例如:
public class Globals{
public static String a;
public static int b;
}
可以通過調用Globals.a & Globals.b
像全局變量一樣使用它,但是它不是很好的代碼方式。 為了獲得更好的安全性,請使用Amir和Kumar提到的JNDI。
這完全取決於登錄信息是否應保密。 對於桌面應用程序,JNDI似乎有點過大,因為您需要自己進行管理。
基本上,您有2個選擇:
通常,您想在應用程序外部管理連接信息,例如在配置文件中。 然后,您可以完全控制應用程序可以連接到的數據庫,而不會被硬編碼的數據庫所困擾。 如果無法將應用程序連接到測試數據庫或故障轉移數據庫而不必構建新版本,我將感到非常不滿!
另外,也許更重要的是:這樣,無需知道應用程序的內部組件,便可以進行管理。 您希望自己處於可以構建應用程序的位置,然后讓其他人擔心要支持它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.