Web applications 何时在Java Web应用程序中读取.properties文件

Web applications 何时在Java Web应用程序中读取.properties文件,web-applications,jakarta-ee,properties-file,Web Applications,Jakarta Ee,Properties File,我正在使用JavaEE6和JSF2.0开发一个web应用程序。我有一个.properties文件,其中存储了一些常量,在部署应用程序之前需要轻松更改这些常量。我知道如何读取属性文件,但问题是何时读取 这是我用来访问名为CLIENT\u ID和CLIENT\u SECRET的属性的类: public class FConnectProperties { Properties properties; public FConnectProperties() throws FileN

我正在使用JavaEE6和JSF2.0开发一个web应用程序。我有一个.properties文件,其中存储了一些常量,在部署应用程序之前需要轻松更改这些常量。我知道如何读取属性文件,但问题是何时读取

这是我用来访问名为
CLIENT\u ID
CLIENT\u 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");
    }
因为这个类从磁盘读取属性文件,所以每次需要访问属性文件时都可以实例化它吗?或者我应该在应用程序启动时实例化它一次(可能是从单例Bean),然后从那里访问它?做这件事最好的方法是什么


应用程序启动后,属性不会更改。我只是在读它们,从不更新它们。

我建议在启动时读一次文件,就像你说的那样,将它们保存在一个单独的文件中。因为我猜您的属性是一组键/值对的选择,它们并没有那么大,所以我认为它们应该在映射类型的数据结构中表现良好


根据您需要访问它们的频率,从磁盘读取它们的成本可能会很高。

因为属性文件不会更改,所以在启动时只加载一个文件实例是有意义的。无需再次读取该文件