从 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");
定义上述方法并另外创建一个class 调用的常量(或合适的东西)。在此处将所有键定义为静态最终变量。
public class 常量
{
public static final String KEY = "key";
public static final String KEY2 = "key2";
}
现在调用使用这些变量而不是字符串获取值:
String value = GetValue(KEY); //GetValue("key");
如果您只执行选项 1,您的代码将变得更具可读性。但我会推荐第二个选项,它使您的代码可读且可维护。
您可以轻松进行以下操作:
- 更新属性名称
- 无需担心输入错误的密钥等问题
我有属性文件 app.properties
,它有 50 个不同的属性。
我正在使用
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");
定义上述方法并另外创建一个class 调用的常量(或合适的东西)。在此处将所有键定义为静态最终变量。
public class 常量 { public static final String KEY = "key"; public static final String KEY2 = "key2"; }
现在调用使用这些变量而不是字符串获取值:
String value = GetValue(KEY); //GetValue("key");
如果您只执行选项 1,您的代码将变得更具可读性。但我会推荐第二个选项,它使您的代码可读且可维护。
您可以轻松进行以下操作:
- 更新属性名称
- 无需担心输入错误的密钥等问题