在Java中存储MySQL登录信息的最佳方式

时间:2014-02-19 07:25:52

标签: java mysql

在Java应用程序中存储MySQL登录配置设置的最佳方法是什么。

我想在Java中使用MySQL连接并对

产生好奇心
  

主机/数据库/登录/密码

存储。我的程序打算多线程并将固定的登录信息写入每个类看起来不太好。 存储可以多次使用的身份验证数据的最佳方法是什么?

例如,在PHP中,通常使用全局变量创建mysqlinfo.php并包含在每个文件中。如果某些数据发生变化,您只需要修改mysqlinfo.php

但是Java怎么样?我应该使用全局变量还是应该存储登录名/密码/等。在每个类的私人字符串?

5 个答案:

答案 0 :(得分:3)

如果它是服务器应用程序(在应用程序或Web服务器中运行),您可以使用JNDI DataSource。或者,您可以将它们存储在环境变量中。

对于桌面应用程序,您可以使用属性文件并从那里读取值。同样,从环境变量中读取它们是另一种选择。

答案 1 :(得分:2)

答案可能取决于您正在进行的应用程序类型。既然你提到了php我想你想要一个基于web的应用程序。对于基于Web的应用程序,我更喜欢将其用作JNDI数据源。使用JNDI,您不会在代码中存储任何用户ID,密码等。

答案 2 :(得分:1)

在Java中,对于全局变量,只需创建一个公共类,并将那里的全局属性定义为static,并调用此类。

例如:

public class Globals{
public static String a;
public static int b;
}

通过调用Globals.a & Globals.b可以像全局变量一样使用它,但它不是很好的代码方式。为了更好的安全性,请使用Amir和Kumar提到的JNDI。

答案 3 :(得分:1)

这完全取决于登录信息是否应该保密。对于桌面应用程序,JNDI似乎有点矫枉过正,因为您需要自己管理它。

基本上你有两个选择:

  1. 将设置保留在属性文件中。如果登录信息需要保密,您可以加密这些数据,以确保人们不能只读取它并使用该信息。
  2. 将信息固定在您的代码中。这不是一个非常便携的解决方案,因为当您想要更改任何这些信息时,您必须重新编译所有内容。

答案 4 :(得分:1)

通常,您希望管理应用程序外部的连接信息,例如在配置文件中。然后,您可以完全控制应用程序可以连接到哪个数据库,而不是使用硬编码的数据库。如果我不能将应用程序挂钩到测试数据库或故障转移数据库而不必构建它的新版本,我会非常不高兴!

或许更重要的是:然后有人可以管理它而无需了解应用程序的内部;你希望自己处于可以构建应用程序的位置,然后让其他人担心支持它。