Quelle est la meilleure stratégie pour le chargement des propriétés?

J'ai plusieurs classes qui ont besoin de charger des fichiers de propriétés, et je me demandais quelles sont les meilleures pratiques pour accomplir cette tâche. J'ai pensé à deux approches de base:

  • Coder en dur les propriétés de nom de fichier dans chaque classe, et ensuite utiliser le Properties de la classe à charger à partir d'un FileInputStream, ce qui peut être problématique si quelqu'un décide de changer le nom du fichier de propriétés, comme c'est codé en dur dans le code.
    public class A {
        public A() {
            Properties p = new Properties().load(
                    new FileInputStream("properties/Aconfig.properties"));
            String value = p.getProperty("key", "");
        }        
    }
  • Créer une méthode qui, étant donné un nom de classe, charge un fichier de propriétés qui a le même nom que la classe. Bien que cette approche n'a pas besoin de coder en dur les propriétés de nom de fichier, il ne nécessite que nous suivons certains convention de nommage des fichiers, ce qui peut entraîner de la confusion.
    public class A {
        public A() {
            Properties p = PropertiesHelper.loadFromClassName(A.class.getName());
            //here, we **assume** that there is a A.properties file in the classpath.
        }
    }

Cependant, il peut y avoir beaucoup d'autres plus élégant approches, et c'est pourquoi j'ai posé ces questions: i) Quelles sont les meilleures pratiques pour le chargement des fichiers de propriétés en Java?; ii) utilisez-vous toute la classe helper qui prend soin de l'emploi?; iii) Où (dans le code) faites-vous généralement de charger le fichier de propriétés?

Aussi, est-il OK pour une classe de "chargement automatique" ses propriétés? Ou dois-je passer les arguments que j'ai besoin pour le constructeur ? Le problème du passage des arguments, c'est qu'il y a beaucoup trop pour certaines classes (~20, qui représentent des paramètres dans un modèle statistique).

OriginalL'auteur João Silva | 2009-08-04