我选择使用属性文件来自定义某些设置.我使用以下代码在类中提供属性对象
Properties defaultProps = new Properties();
try {
FileInputStream in = new FileInputStream("custom.properties");
defaultProps.load(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我是否必须将此添加到每个班级?可能不是因为那时每个类都会打开一个流到这个文件.但我不确定如何妥善处理这个问题.我应该创建一个类MyProperties并在任何类需要属性中实例化它吗?
提前致谢!
Pét*_*rök 12
初始化后defaultProps,您可以将其内容提供给应用程序中的其他对象,例如通过公共静态访问器方法,例如:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是最简单的方法,但它会创建一个额外的依赖项,这会使单元测试更加困难(除非您提供一个方法Config来设置单元测试的mock属性对象).
另一种方法是将defaultProps(或其中的单个配置值)注入到需要它的每个对象中.但是,这可能意味着如果您的调用层次结构较深,则需要在许多方法中添加额外的参数.
| 归档时间: |
|
| 查看次数: |
14997 次 |
| 最近记录: |