2010-11-30 23 views
0

Je développe une application web utilisant Java EE6 et JSF 2.0. J'ai un fichier .properties dans lequel je stocke quelques constantes, que je dois changer facilement avant de déployer l'application. Je sais comment lire un fichier de propriétés, mais la question est quand?Quand lire un fichier .properties dans une application Web Java

C'est la classe que je utilise pour accéder aux propriétés appelé CLIENT_ID et 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"); 
    } 

Depuis cette classe lit le fichier de propriétés à partir du disque, est-il autorisé à ce instancier chaque fois que je besoin d'accès leur? Ou devrais-je l'instancier une fois pendant le démarrage de l'application, (éventuellement à partir d'un bean Singleton) et y accéder à partir de là? Quelle est la meilleure façon de faire cela?

Les propriétés ne sont pas modifiées une fois l'application lancée. Je ne fais que les lire, ne les met jamais à jour.

Répondre

0

Je suggère de lire le fichier une fois au démarrage, et comme vous le dites en les tenant dans un singleton. Puisque je devine que vos propriétés sont une sélection de paires clé/valeur, qui ne sont pas si grandes, je dirais qu'elles devraient bien fonctionner dans une structure de données de type carte. Selon la fréquence à laquelle vous devez y accéder, la lecture à partir du disque peut devenir coûteuse.

0

Étant donné que le fichier de propriétés ne change pas, il est logique de ne créer qu'une seule instance du fichier à charger au démarrage. Il n'est pas nécessaire de lire à nouveau le fichier.