【问题标题】:Java equivalent to app.config?Java相当于app.config?
【发布时间】:2008-10-17 15:03:25
【问题描述】:

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

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

【问题讨论】:

    标签: java configuration-files


    【解决方案1】:

    将@Powerlord 的使用Properties 类的建议(+1)放入示例代码中:

    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可以在这里提供的最佳解决方案吗???这似乎很幼稚。
    • 根据我的需要,这是 2013 年我能做到的最好的解决方案。我相信更通用的解决方案通常包含在应用程序服务器中。我想到了“企业 Java bean”这个短语,虽然我个人从未在那种环境中工作过。
    【解决方案2】:

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

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

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

    【讨论】:

    • 您能否提供更多关于第一个选项的信息:​​“web.xml 可用于存储应用程序设置”?您是否建议将应用程序设置存储为context-params?还是别的什么?
    • 您可以在 web.xml 中放入几种不同类型的参数,但我的意思可能是context-param。我不记得了,因为从那以后已经 7.5 年了。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 2015-03-22
      • 1970-01-01
      • 2012-06-02
      • 2011-02-04
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      相关资源
      最近更新 更多