我选择使用属性文件来自定义一些设置。 我使用以下代码使类中的属性对象可用
Properties defaultProps = new Properties();
try {
FileInputStream in = new FileInputStream("custom.properties");
defaultProps.load(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
我是否必须将此添加到每个类(class)?可能不是因为每个类(class)都会打开一个流到这个文件。
但我不确定如何正确处理这个问题。
我应该创建一个类 MyProperties
并在任何需要属性的类中实例化它吗?
提前致谢!
最佳答案
一旦你初始化了 defaultProps
,你就可以让它的内容对你应用中的其他对象可用,例如通过公共(public)静态访问器方法,例如:
public class Config {
private static Properties defaultProps = new Properties();
static {
try {
FileInputStream in = new FileInputStream("custom.properties");
defaultProps.load(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getProperty(String key) {
return defaultProps.getProperty(key);
}
}
这是最简单的方法,但是它会创建一个额外的依赖关系,这会使单元测试变得更加困难(除非您在 Config
中提供一个方法来为单元测试设置模拟属性对象)。
另一种方法是将 defaultProps
(或其中的各个配置值)注入(inject)到需要它的每个对象中。但是,这可能意味着如果您的调用层次结构很深,您需要向许多方法添加额外的参数。
关于java - 使 Java 属性跨类可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750131/