Frage

Ich bin in den Prozess der Ausmerzung aller hartcodierten Werte in eine Java-Bibliothek und fragte mich, welche Rahmenbedingungen würden die besten (im Sinne von null - oder nahezu null-Konfiguration) für die Bearbeitung der Laufzeit-Konfiguration?Ich würde es vorziehen, XML-basierten Konfigurationsdateien, aber es ist nicht wichtig.

Bitte nur Antworten, wenn Sie haben praktische Erfahrungen mit einem framework.Ich bin nicht auf der Suche nach Beispielen, aber die Erfahrung...

War es hilfreich?

Lösung

Wenn Ihr hartcodierte Werte sind nur einfache Schlüssel-Wert-Paare, sollte man sich ansehen, java.util.Eigenschaften.Es ist viel einfacher als xml, einfacher zu verwenden und Geist-betäubend trivial zu implementieren.

Wenn Sie die Arbeit mit Java und die Daten, die Sie speichern oder abrufen von der Festplatte ist modelliert als ein Schlüssel-Wert-paar (die es klingt wie es ist in deinem Fall), dann kann ich mir eigentlich nicht vorstellen, eine bessere Lösung.

Benutzt habe ich die properties-Dateien für die einfache Konfiguration von kleine Pakete in einem größeren Projekt, und mehr als eine Konfiguration für ein ganzes Projekt, und ich hatte nie Probleme mit ihm.

Das hat natürlich den riesigen Vorteil, der nicht die 3rd-party-Bibliotheken zu nutzen.

Andere Tipps

Apache Commons Configuration funktioniert Super.Es unterstützt mit der Konfiguration gespeichert in einer Vielzahl von Formaten auf dem backend-einschließlich Eigenschaften, XML, JNDI, und mehr.Es ist einfach zu bedienen und zu erweitern ist.Um eine höchstmögliche Flexibilität des it-Einsatzes ein Fabrik um die Konfiguration und verwenden nur die Konfigurations-Schnittstelle nach, dass.

Zwei feature of Commons Konfiguration, unterscheiden Sie sich über eine gerade Properties-Datei ist, dass es Unterstützung automatische Konvertierung in gängige Typen (int, float, String arrays) und es unterstützt die Eigenschaft substitution:

server.host=myHost
server.url=http://${server.host}/somePath

Hier stehen verschiedene Optionen:

Möchten Sie vielleicht zu Lesen Vergleich-Commons-Konfiguration Mit JFig und JConfig und Konfigurieren Sie Ihre Anwendungen mit JFig für ein feedback von verschiedenen Benutzern.

Ich persönlich verwendet habe, jConfig, und es war eine gute Erfahrung.

Commons-Configuration

Wir benutzen diese.Eigenschaften-Dateien allein sind viel einfacher zu handhaben, aber wenn Sie müssen, stellen komplexere Daten-commons-Konfiguration tun können Sie diese Lesen und Ihre Eigenschaften-Dateien sowie.

Wenn Sie nicht tun, nichts kompliziert, ich würde stick zu " Eigenschaften-Dateien.

Wenn Sie etwas tun wollen fortgeschrittene (und typesafe), möchten Sie vielleicht werfen Sie einen Blick auf diese: http://www.ibm.com/developerworks/java/library/j-configint/index.html

die Intelligente Parameter-Auslastung Tool (Eingang, Seite) erlaubt externalisieren, fast jede (hart codiert) Entscheidung als parameter in einer XML-basierten Konfigurationsdatei. Es wurde begonnen, Anfang 2012 als Reaktion auf die wahrgenommenen Mängel in der vorhandenen Konfigurations-tools mit Bezug auf Allgemeinheit, und die Trennung von Bedenken.

InPUT ist wahrscheinlich stärker als in den meisten Anwendungsfällen müssen, als Sie es ermöglicht, die Programmiersprache unabhängige Formulierung experimentelle Daten (input - output), mit Funktionen wie die definition von Komplex-Deskriptor Zuordnungen Klasse, oder randomisierte Konfiguration laichen und Validierung basierend auf vordefinierten Wertebereiche (für Prüfung und Forschung, z.B.Monte-Carlo-Simulationen).Sie können definieren Sie die Parameter mit den sub-Parameter, relative Einschränkungen für parameter-Werte (numerische param a > param b) etc..

Seine immer noch in der beta, aber ziemlich stabil, ich benutze es für meine Forschung, für die Konfiguration und Dokumentation von Experimenten und für die Lehre.Sobald es verfügbar ist für andere Sprachen (C++ - adapter in das Rohr), andere Wissenschaftler/Praktiker wiederverwenden können Deskriptoren laufen die Implementierungen der algorithmen in C++ (unter Verwendung der code-mapping-Konzept).So, experimentelle Ergebnisse validiert werden können/kann Programme migriert werden mehr leicht.Die Dokumentation ist noch in Arbeit, aber ein paar Beispiele sind auf der Seite.Eingang open source software.

Für Interessenten, die Konzeptionelle Forschung Papier.

Ich Neige dazu, verwenden Sie java.util.Properties (oder ähnliche Klassen in anderen Sprachen und frameworks) verpackt in einer Anwendung-spezifische Konfiguration-Klasse die meisten der Zeit, aber ich bin sehr interessiert an alternativen oder Varianten dieser.Vor allem, da die Dinge werden ein bisschen schwierig, wenn grafischen Konfigurations-Dialoge oder mehrere Ansichten auf der Konfigurations-Daten beteiligt ist.

Leider habe ich keine Erfahrung mit spezifischen Bibliotheken für Java (außer mit denen, die ich geschrieben habe, mich), aber alle Hinweise würden geschätzt werden.

Update

OK.Das war nicht ganz richtig, die drei der Spring Java-Konfiguration Projekt.

Ich schrieb vor ein paar Wochen, und kam zu dem Schluss, dass XML ist eines der am häufigsten verwendeten Notationen.

Ist es das beste?Ich denke nicht so, ich mag es wirklich, JSON, aber das Werkzeug ist immer noch nicht up-to-XML-also ich denke, wir müssen abwarten und sehen.

Sie können versuchen, YamlBeans.Diese Weise Sie schreiben, was Klassen, die Sie wollen zu halten Ihre config-Daten, dann können Sie automatisch Lesen und schreiben Sie zu und von YAML.

YAML is a human readable data formats.Es hat mehr Aussagekraft, als die java.util.Eigenschaften.Sie können Listen, Karten, Anker, typisierte Daten, etc.

Bitte werfen Sie einen Blick auf diese URL: http://issues.apache.org/jira/browse/CONFIGURATION-394

Die Konfigurations-framework, das wir suchen, es ist etwas auf der Apache Commons Configuration und muss unterstützt Concurrency-Probleme, JMX-Probleme und die meisten Geschäfte(e.g .Eigenschaften-Datei .xml-Dateien oder PreferencesAPI).

Was weblogic-team bietet auf "Administration Console" ist interessant, die durch Sie können Sie für Transaktionen(atomic) updates auf Konfigurationen erhältlich, die registrierten Listener benachrichtigt werden.

Der Apache Jungs bestehen darauf, dass dieses Projekt aus den Bereichen der Commons Configuration, vielleicht!

Ich habe in der Anlage eine einfache Konfigurations-framework, schauen Sie bitte.

Ich habe gerade gebucht ein kleines bisschen von code über die Verwendung von Spring ClassPathResource als alternative zu IoC.ClassPathResource erlaubt Ihnen, Platz property-Dateien überall auf dem Klassenpfad (z.B., alle in einem Ort, oder Kollegen, um den code, den Sie konfigurieren.Mein Beispiel aus java verwendet.util.Eigenschaften, so können Sie den Text "name=Wert" - Stil oder seine XML-format.

Eigenschaften-Dateien eine sehr einfache, wenn Sie etwas brauchen, mehr funktionale, Sie könnte format einige Ihrer Konfigurationsdateien als Java-Klassen.Diese können platziert werden in einem anderen Paket/module und können vorab kompiliert oder dynamisch zur Laufzeit geladen mit einer Bibliothek wie BeanShell.

Hinweis:Im einfachsten Fall (pre-compiled) benötigen Sie keine zusätzlichen Bibliotheken.

In Bezug auf die Vorschläge, die auf java.util.Eigenschaften - ab jdk 1.5, die die Einstellungen-API (java.util.einstellen) erscheint, um die bevorzugte alternative zur Verwendung der Eigenschaften API.

Gründe:erhöhte Skalierbarkeit, back-end-Neutralität, ect.

Sie könnte haben einen Blick auf die neu angekündigt tools4j-config deren Leitbild ist es, zu ermöglichen Sie zu leicht Griff der Konfiguration zur Laufzeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top