我们如何创建一个JDBC连接创建逻辑,每次DB凭据发生更改时都不需要更改java代码?
注意::数据库的用户名和密码将由用户(具有特殊权限)给出...给予他完整的权限.. < / p>
我的意思是, DB用户名,密码和其他详细信息通常在java程序中进行硬编码。我们可以保留的其他方法是什么,以便在更改凭据时无需更改Java代码? 我们必须牢记凭证的隐私和安全因素 ......
答案 0 :(得分:1)
Properties properties = new Properties();
properties .load(new FileInputStream(new File("c:\\credentials.properties")));
String user = properties.getProperty("username");
String pass = properties.getProperty("password");
//...
credentials.properties的内容如下所示:
#DB properties:
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost/mydatabase?useEncoding=true&characterEncoding=UTF-8
username = dit
password = 123456
答案 1 :(得分:0)
您可以使用属性文件存储所有凭据和数据库URL。
答案 2 :(得分:0)
您可以使用一些允许您从XML文件加载配置的库 - 我更喜欢XStream。我的数据库配置保存在配置XML中,更改凭据后我唯一需要做的就是重新启动应用程序。
为了提高安全性,您可以将解密密钥硬编码到应用程序中,并将加密密码保存到配置文件中。
当我的应用程序启动时,我创建一个包含应用程序的所有配置的类:
public class ConfigurationUtils {
public static final Config config;
static {
XStream xstream = new XStream();
xstream.alias("config", Config.class);
xstream.alias("proxy", Proxy.class);
xstream.alias("database", Database.class);
xstream.alias("mailServer", MailServer.class);
// Check if a configuration file exists, otherwise use the config from the resources
File file = new File("/etc/applicationname/config.xml");
if(file.exists()) {
config = (Config) xstream.fromXML(file);
} else {
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("config.xml");
config = (Config) xstream.fromXML(is);
}
}
}
引用的类是简单的数据类,包含与config.xml中的名称匹配的私有属性,getter和setter - XStream处理XML值到类的映射。
答案 3 :(得分:0)
如果您的程序是交互式程序,则弹出一个对话框,可以从用户那里获取用户名和密码。如果是命令行程序,您可以在命令行中指定用户名和密码,并在&#39; args&#39;中访问这些值。公共static static main(String [] args)方法中的变量。如果它是没有用户交互的批处理程序,您可以使用上面其他贡献者提到的任何方法。
答案 4 :(得分:0)
这就是我要做的。需要说明的是,我只玩玩具。
其他地方:
该服务还将负责清除进入时的不良情况。
然后,您可以将此交互与单点登录功能相关联,该功能与窗口或 Linux 的用户和组控件相关联,使用 UUID 之类的东西,甚至可以将其以 cookie 的形式滑入网络应用程序。
“用户名”和“密码”不再对通常无法访问的任何人可见。
我认为这可能是公司的做法,但我不知道,因为我很少知道我在说什么,因此无法雇用。