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

在java中从属性文件访问属性的最佳方法,java,properties,Java,Properties,我有属性文件app.properties,它有50个不同的属性。 我使用 Properties prop = new Properties(); prop.load("app.properties"); System.out.prinltn(prop.getProperty("APPNAME")); 实际上,我想摆脱对属性的访问,比如prop.getProperty(“APPNAME”)。java中有没有访问属性的最佳方法 我可以在java类中将所有变量声明为静态变量 static Stri

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

Properties prop = new Properties();
prop.load("app.properties");

System.out.prinltn(prop.getProperty("APPNAME"));
实际上,我想摆脱对属性的访问,比如
prop.getProperty(“APPNAME”)
。java中有没有访问属性的最佳方法

我可以在java类中将所有变量声明为静态变量

static String appName = prop.getProperty("APPNAME");
还有其他最好的方法吗

您可以使用“resourceBundle”包作为

首先导入resourceBundle API:

import java.util.ResourceBundle;
创建属性文件的实例:

private static ResourceBundle resource = ResourceBundle.getBundle("app");
现在,您可以获得该属性的值:

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

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

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.定义一个实用方法,该方法将字符串作为参数并从属性返回值

例如:

public static String GetValue(String key) {
    return properties.getProperty(key);
}
现在您可以在调用者上使用此函数

String value = GetValue("key"); // properties.getProperty("key");
  • 定义上述方法,另外创建一个名为Constants的类(或其他合适的类)。在这里将所有键定义为静态最终变量

    公共类常量 { 公共静态最终字符串KEY=“KEY”; 公共静态最终字符串KEY2=“KEY2”; }

  • 现在使用以下变量而不是字符串调用获取值:

    String value = GetValue(KEY); //GetValue("key");
    
    如果只执行选项1,代码的可读性将提高。但我会推荐第二个选项,它使您的代码既可读又可维护

    您可以轻松地执行以下操作:

  • 更新属性名
  • 无需担心键盘输入错误等问题

  • 如果您将变量存储在
    Properties()
    中,则实际上不会。您可以使变量
    静态最终字符串appName=它将为您提供以下代码:
    String appName=Properties.appName我会用getter和setter将您的属性封装在一个类中。通过这种方式,您可以以正确的类型访问数据,并可能更改属性和/或getter的名称,而不更改其他名称。