【问题标题】:Best Way to read configuration file [duplicate]读取配置文件的最佳方式[重复]
【发布时间】:2019-10-02 09:05:23
【问题描述】:

我需要询问如何为我的应用程序读取配置文件的最佳方式。 目前我正在做的是将上面的代码放在我的Java程序中,获取我想要的所有配置项,然后将值传递给需要变量的函数。

让配置文件只加载一次并且可以在其他进程(其他用户)中使用的最佳方法是什么?

File configFile = new File("D:\\config.properties");

try {
    FileReader reader = new FileReader(configFile);
    Properties prop = new Properties();
    prop.load(reader);

    String dbName = prop.getProperty("dbName");
    String dBase = prop.getProperty("database");

    String strMethod1 = prop.getProperty("method1"); 
    int method1 = Integer.parseInt(strMethod1);

    String strMethod2 = prop.getProperty("method2"); 
    int method2 = Integer.parseInt(strMethod2);

} catch (IOException e) {
    returnValue = IO_EXCEPTION;
    logger.error("IOException:::" + e + "  returnValue:::" + returnValue);
}

【问题讨论】:

  • 将值存储在静态变量中或使用单例模式。那将是最简单的方法。并不是说这是最好的方法。

标签: java properties-file


【解决方案1】:

我建议创建您自己的类来包装Properties 并负责提供单独的配置值。该类还应负责仅读取一次属性文件(或在需要读取时)。

一旦你有了这样的课程,你就有两个选择。要么启动一次,然后让其他类静态访问它(可能作为singleton)。或者不要使用静态实例并将其作为dependency 传递给需要配置的类。

使用静态引用是一种更简单的方法,但它会使测试变得复杂,因为现在您的所有类都静态地依赖于该类。将其作为依赖项传递可以提高可测试性,但需要实际传递该类或使用某种依赖注入框架/库。

最后,我建议不要直接使用Properties。有一些不错的配置库可以简化复杂项目中处理配置的许多平凡方面。换句话说,那个*已经被发明了,并且被重新发明了很多次。

我个人喜欢使用owner,但也有apache commons configuration,以及其他库。

【讨论】: