Wie verwende ich Resourcebundle, um hartcodierte Konfigurationswege in Java -Apps zu vermeiden?
-
03-07-2019 - |
Frage
Ich möchte Abhängigkeiten von hartcodierten Pfaden für Konfigurationsdaten in meinen Java -Apps beseitigen. Ich verstehe, dass die Verwendung von Resourcebundle mir hilft, den Klassenloader zu verwenden, um Ressourcen zu finden.
Kann mir jemand sagen, wie ich einen festcodierten Pfad in eine Ressource (z. B. eine .Properties -Konfigurationsdatendatei) ersetzen würde, die von einer Klasse gefordert wird), mit einer angemessenen Verwendung von Resourcebundle? Einfaches klares Beispiel, wenn möglich, danke an alle.
Lösung
Vor Java 6 erlaubte Ressourcebundle in der Regel:
- Saiten aus einer Gruppe lokalisierter Eigenschaftendateien verwenden PropertyResourcebundle
- Objekte aus einer Gruppe lokalisierter Klassen, die verwenden Listresourcebundle
Java 6 kommt mit dem Resourcebundle.Control Klasse, der die Tür zu anderen Quellen von Resourcebundles öffnet, zum Beispiel:
- XML -Dateien (siehe Beispiel 2 in Javadoc)
- Datenbankreihen
Hoffe das hilft.
Andere Tipps
Sie werden untersuchen wollen Ressource.getBundle (String). Sie übergeben es den voll qualifizierten Namen einer Ressource auf dem Klassenpfad zum Laden als Eigenschaftendatei.
Sie benötigen keine RessourcenBundle. Ein einfaches Eigenschaftenobjekt kann den Job erledigen. Verwenden Sie einfach den Classloader, um einen InputStream für Ihre Eigenschaftendatei zu erhalten, und laden Sie sie zum Laden von DE -Werten. Wenn Sie komplexere Benutzerkonfigurationen verarbeiten müssen, verwenden Sie die Vorlieben API.
Mit freundlichen Grüße
Der Trick hinter Ressource.getBundle (..) ist die Verwendung des Klassenloaders. Sie können alles laden, was in Ihrem Klassenpfad ist, indem Sie über diese über dies zugreifen. Ressource.getBundle (..) ist ein praktischer Helfer, der es im Thema Ressourcen-/Lokatisierung verwendet.