Java的app.config等价物是什么?

26

Java中是否有.NET的App.Config的等效物?

如果没有,是否有一种标准方法来保存应用程序设置,以便在应用程序分发后可以更改这些设置?

3个回答

18

对于 WebApps,可以使用 web.xml 存储应用程序设置。

除此之外,您还可以使用 Properties 类读写属性文件。

您可能还想查看 Preferences 类,该类用于读写系统和用户首选项。它是一个抽象类,但您可以使用 userNodeForPackage(ClassName.class)systemNodeForPackage(ClassName.class) 获取适当的对象。


你能提供更多关于第一个选项的信息吗:“web.xml可用于存储应用程序设置”? 你是建议将应用程序设置存储为“context-param”吗? 还是其他什么? - theyuv
有几种不同类型的参数可以放在web.xml中,但我可能是指context-param。我记不清了,因为那已经是7.5年前的事情了。 - Powerlord

11

为了将@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

这感觉不是完美的(我很想听听有什么改进意见),但对于我目前的需求来说已经足够好了。


真的吗?所以你基本上是在文件上运行流读取器来获取设置?在多个类的情况下,您将需要像助手类这样的东西,可以跨类使用? 这是Java在这里能提供的最佳解决方案吗?它似乎非常幼稚。 - tom33pr
这是我在2013年为了满足自己的需求所能做到的最好的。我相信更通用的解决方案通常包含在应用服务器中。虽然我个人从未在那种环境下工作过,但“企业Java Bean”这个词汇浮现在脑海中。 - Pursuit

2

一种简单的方法是使用属性文件,例如myapp.properties,其中包含所有设置。这不是一个非常高级的设置方式,但足以满足要求,或者您可以使用自己基于XML的设置,或从数据库中获取它们等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接