我正在使用Java EE6和JSF 2.0开发Web应用程序。我有一个.properties文件,其中我存储了一些常量,我需要在部署应用程序之前轻松更改。我知道如何读取属性文件,但问题是什么时候?
这是我用来访问名为CLIENT_ID
和CLIENT_SECRET
的属性的类:
public class FConnectProperties {
Properties properties;
public FConnectProperties() throws FileNotFoundException, IOException{
properties = new Properties();
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream stream = classLoader.getResourceAsStream("/FConnect/FConnect.properties");
properties.load(stream);
stream.close();
}
public String getClientID(){
return properties.getProperty("CLIENT_ID");
}
public String getClientSecret(){
return properties.getProperty("CLIENT_SECRET");
}
由于这个类从磁盘读取属性文件,每次我需要访问它时是否可以实例化它?或者我应该在应用程序启动期间(可能来自Singleton Bean)实例化一次并从那里访问它?这样做的最佳方法是什么?
启动应用程序后,属性不会更改。我只是在阅读它们,从不更新它们。
答案 0 :(得分:0)
我建议你在启动时阅读一次这个文件,正如你所说的那样将它们保存在一个单例中。由于我猜测你的属性是一对键/值对的选择,并不是那么大,我认为它们应该在地图类型的数据结构中表现良好。
根据您需要访问它们的频率,从磁盘读取它们可能会变得很昂贵。
答案 1 :(得分:0)
由于属性文件没有更改,因此只生成应该在启动时加载的文件的一个实例。无需再次读取文件。