Java中是否有.NET的App.Config的等效物?
如果没有,是否有一种标准方法来保存应用程序设置,以便在应用程序分发后可以更改这些设置?
Java中是否有.NET的App.Config的等效物?
如果没有,是否有一种标准方法来保存应用程序设置,以便在应用程序分发后可以更改这些设置?
对于 WebApps,可以使用 web.xml 存储应用程序设置。
除此之外,您还可以使用 Properties 类读写属性文件。
您可能还想查看 Preferences 类,该类用于读写系统和用户首选项。它是一个抽象类,但您可以使用 userNodeForPackage(ClassName.class)
和 systemNodeForPackage(ClassName.class)
获取适当的对象。
为了将@Powerlord的建议(+1)使用Properties
类放入示例代码中:
public class SomeClass {
public static void main(String[] args){
String dbUrl = "";
String dbLogin = "";
String dbPassword = "";
if (args.length<3) {
//If no inputs passed in, look for a configuration file
URL configFile = SomeClass.class.getClass().getResource("/Configuration.cnf");
try {
InputStream configFileStream = configFile.openStream();
Properties p = new Properties();
p.load(configFileStream);
configFileStream.close();
dbUrl = (String)p.get("dbUrl");
dbLogin = (String)p.get("dbUser");
dbPassword = (String)p.get("dbPassword");
} catch (Exception e) { //IO or NullPointer exceptions possible in block above
System.out.println("Useful message");
System.exit(1);
}
} else {
//Read required inputs from "args"
dbUrl = args[0];
dbLogin = args[1];
dbPassword = args[2];
}
//Input checking one three items here
//Real work here.
}
}
然后,在容器的根目录(例如,一个jar文件的顶部)放置一个名为Configuration.cnf
的文件,并包含以下内容:
#Comments describing the file
#more comments
dbUser=username
dbPassword=password
dbUrl=jdbc\:mysql\://servername/databasename
这感觉不是完美的(我很想听听有什么改进意见),但对于我目前的需求来说已经足够好了。
一种简单的方法是使用属性文件,例如myapp.properties,其中包含所有设置。这不是一个非常高级的设置方式,但足以满足要求,或者您可以使用自己基于XML的设置,或从数据库中获取它们等。
context-param
。我记不清了,因为那已经是7.5年前的事情了。 - Powerlord