只是一个快速而简单的问题。我有一个包含几个类的程序,可以从 .properties 文件中读取信息。将文件从类传递到类作为构造函数中的参数,还是直接在每个类中打开文件是更好的做法?
问问题
327 次
4 回答
2
如果您要手动执行此操作,我建议您创建一个配置类,该类通过构造函数获取文件,并将属性值读入成员变量。然后需要配置的每个其他类都通过它的构造函数获取一个配置类。但是,几乎没有人这样做,而是使用像 spring 这样的框架来为您处理属性注入。
在春天,它看起来像这样:
<!-- application context xml file -->
<context:property-placeholder location="file:///some/path/to/file" />
然后在你的java类中:
public class SomeClass {
@Value("${some.property}")
private String someProp;
@Value("${some.other.prop}")
private Integer someOtherProp;
// ...
}
在应用程序启动时,属性会被注入到您的类中。
于 2013-02-02T05:14:10.343 回答
0
我的建议是有一个 Util 类来加载属性文件并从该 Util 获取值到所需的类。
注意:我认为您在加载属性文件时没有任何问题。
于 2013-02-02T05:18:36.790 回答
0
我建议您创建一个不可变类,将文件作为构造函数参数并设置所有实例变量。我称之为PropertyConfiguration。然后由于类是不可变的,你不必担心将它传递给每个人。你甚至可以有一个拥有它的类。
例如,下面的代码将使您有一个很好的设置,以便在项目范围内拥有几个可用的东西。我只会确保共享的任何内容都是不可变的,以确保线程安全。
public class ClientUtils {
private static ClientContext _clientContext = null;
public static void setClientContext(ClientContext cc) {
_clientContext = cc;
}
public static ClientContext getContext() {
return _clientContext;
}
}
public class ClientContext {
private final Configuration _configuration;
public ClientContext(Configuration config){
_configuration = config;
}
public Configuration getClientContext() {
return _configuration;
}
}
于 2013-02-02T05:36:01.197 回答
0
如果您的程序包含不需要编译的数据并且可能因部署而异,则必须将其添加到属性文件中:(数据库连接字符串、电子邮件地址等内容)。
以防万一您需要这个,我正在添加用于访问属性文件的代码。将文件拖放到构建目录中。
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("credentials.properties"));
于 2013-02-02T05:44:23.423 回答