从 java 中的 属性 文件访问属性的最佳方式

Best way to access properties from property file in java

我有属性文件 app.properties,它有 50 个不同的属性。 我正在使用

访问我的javaclass中的那些
Properties prop = new Properties();
prop.load("app.properties");

System.out.prinltn(prop.getProperty("APPNAME"));

实际上,我想摆脱像 prop.getProperty("APPNAME") 那样访问 属性。 java 中是否有访问属性的最佳方法。

我可以在 java class.

中将所有变量声明为静态
static String appName = prop.getProperty("APPNAME");

还有其他最好的方法吗?

您可以将 "resourceBundle" 包用作

首先导入资源包API:

import java.util.ResourceBundle;

创建您的 属性 文件的实例:

private static ResourceBundle resource = ResourceBundle.getBundle("app");

现在可以得到属性的值了:

String appName = resource.getString("APPNAME");

IMO,您使用静态变量保存值的方法是最好的。以下结构是我在项目中使用的相同功能。

package snippet;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class Constants {

    public static final String APPNAME;
    public static final String VERSION;
    public static final int DEFAULT_TIMEOUT;

    static {
        Properties p = new Properties();
        try {
            p.load(new FileInputStream("constants.properties"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        APPNAME = p.getProperty("APPNAME");
        VERSION = p.getProperty("VERSION");
        DEFAULT_TIMEOUT = Integer.parseInt(p.getProperty("DEFAULT_TIMEOUT"));
    }
}

当然还有NumberFormatException等检查

我可以推荐两种方法: 1. 定义一个实用方法,它将 String 作为参数并从属性中获取 return 值。

例如:

public static String GetValue(String key) {
    return properties.getProperty(key);
}

现在您可以对来电者使用此功能

String value = GetValue("key"); // properties.getProperty("key");
  1. 定义上述方法并另外创建一个class 调用的常量(或合适的东西)。在此处将所有键定义为静态最终变量。

    public class 常量 { public static final String KEY = "key"; public static final String KEY2 = "key2"; }

现在调用使用这些变量而不是字符串获取值:

String value = GetValue(KEY); //GetValue("key");

如果您只执行选项 1,您的代码将变得更具可读性。但我会推荐第二个选项,它使您的代码可读且可维护。

您可以轻松进行以下操作:

  1. 更新属性名称
  2. 无需担心输入错误的密钥等问题