Properties verwalten!

Status
Nicht offen für weitere Antworten.

ymene

Bekanntes Mitglied
Hallo zusammen,

seit geraumer Zeit beschäftige ich mich mit dem Thema Properties und versuche diese nach und nach in eine vorhandene Applikation zu implementieren. Ich habe mich dabei für die apache.commons.configuration API entschieden, da diese einfach zu handhaben und sämtliche Datenformate unterstützt, sollten sich diese mal ändern.

Viele Teilaspekte habe ich beim Durcharbeiten des How'to schnell verstanden, jedoch fehlt mir offenbar der letzte Funke für das Große & Ganze. Ich hoffe ihr könnt mir helfen. Und zwar geht es darum, wie ich die Properties letztendlich verwalte.

Möglichkeit 1:
Ist es sinnvoll sich vorweg eine Default-Properties Klasse zu schreiben, die alle Properties von vornerein einmal in ein default.properties-File schreibt und dann aufbauend auf diesem Propertyfile man zur Laufzeit einfach via setProperty die Werte zuweist? Nachteil wäre, dass sich diese Variante nicht so leicht pflegen lässt, da jede Änderung immer gleich an zwei Stellen vorgenommen werden müsste. oder

Möglichkeit 2:
Baut man zur Laufzeit ein Propertyfile auf, womöglich mit einem eigenen überschriebenen setter, welcher zunächst prüft, ob dieses Property bereits vorhanden ist. Falls nicht, lege dieses Property im File an, falls doch, setze es einfach auf den übergebenen Wert? Hier wäre der Nachteil, dass sich die Verwaltung unterschiedlicher Property-Files dadurch etwas erschwert, da diese je nach Abfolge unterschiedlicher Aufrufe anders strukturiert sein können.

Das Ganze gestaltet sich nicht so einfach, da ich Properties, wie default, "last-used" und userspezifische Properties unterstützen möchte, daher hoffe ich, dass ich meinen Gewissenskonflikt ausgiebig darstellen konnte und ihr mir vielleicht einen Ansatz geben könnt, um mich ein Wenig in die richtige Spur zu leiten.

Vielen Dank,
ymene
 

eliot

Bekanntes Mitglied
Wenn ein Value von einem key (Property) default ist, warum dann überhaupt in eine Datei Speichern?

Einfaches Beispiel (pseudo code):

Code:
public static final String KEY_FULLSCREEN="fullscreen";
public static final boolean DEFAULT_FULLSSCREEN="false";

PropertiesCOnfiguration conf = new PropertiesConfiguration();
conf.load(InputStream);

boolean full = conf.getBoolean(KEY_FULLSCREEN, DEFAULT_FULLSCREEN);

Wenn nicht eingetragen, dann nimm default Wert.
Setzt du ein Property, dann speichere die Propertiesdatei danach (an synchronized denken).

Ansonsten bietet es ich weiter an, den Configurator als Singleton anzulegen.

regards
eliot
 

ymene

Bekanntes Mitglied
Danke eliot für die Anregungen.

Singleton halte ich hierbei auch auf jeden Fall für sinnvoll und hab ich auch so implementiert.

Dennoch ist mir so einiges nicht ganz klar:

Zum Thema default.properties, diese wollte ich z.b. für etwas nutzen wie "ResetPreferencesToDefault" (ich vergleichs immer gerne mit: "Auf Werkseinstellungen zurücksetzen") oder ähnliches. Dort kann ich ihm ja nicht automatisch sagen, er solle den Default-Wert einer Property nehmen, da ein valid-Wert in der richtigen Config ja auf jeden Fall vorhanden ist, und er gar nicht erst auf den Default zurückgreifen wird. Daher muss ich eine Default.Properties zumindest irgendwo anlegen, welche nicht weiter veränderlich ist.

Beispiel:

Code:
conf.getBoolean(KEY_FULLSCREEN, DEFAULT_FULLSCREEN);

KEY_FULLSCREEN ist in der Userproperty auf jeden Fall vorhanden, also ist kein zugriff auf DEFAULT_FULLSCREEN möglich, oder übersehe ich hierbei etwas?

Was das Speichern betrifft: Soll man dieses wirklich nach jedem setzen einer Property durchführen? Es gäbe ja auch die Möglichkeit autosave zu nutzen in apache.commons.configuration. Jedoch hab ich gelesen, dass man davon abrät, damit er nicht ständig im File am schreiben ist. Derzeit hab ich es so implementiert, dass er die Properties erst in einem Shutdownhook in einem Propertyfile speichert, und wollte zusätzlich evtl. implementieren, dass sie zumindest nach jedem View-Wechsel persistent gehalten werden.

Kannst du mir vielleicht noch mal kurz erläutern, warum synchronized in diesem Zusammenhang wichtig ist?

Danke nochmals,
ymene
 

HoaX

Top Contributor
Synchronized aus dem Grund, dass nicht zwei Threads gleichzeitig speichern und dadurch am Ende Müll in der Config steht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Ein paar Fragen zu .properties und .css Allgemeine Java-Themen 6
S Test mit Werten aus der .properties Allgemeine Java-Themen 4
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
K Properties serializable machen Allgemeine Java-Themen 6
KeVoZ_ Properties mit String auslesen Allgemeine Java-Themen 11
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
Baldur BeanInfo für Properties-UI? Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
B Objekte anhand von Properties file Allgemeine Java-Themen 41
W Input/Output Kann .properties Datei in kompilierter .jar nicht ändern Allgemeine Java-Themen 2
Thallius Speicherverhalten von Properties und mehreren Threads Allgemeine Java-Themen 5
T [log4j] Wie nutzt man log4j.properties? Allgemeine Java-Themen 7
I Best Practice Properties auslesen und splitten (RegExp?) Allgemeine Java-Themen 0
OnDemand Lesen aus Properties Allgemeine Java-Themen 7
D JAVA - Properties Datei mit Userdaten Allgemeine Java-Themen 7
M StripesResources.properties Allgemeine Java-Themen 2
GUI-Programmer Mehr als Properties Allgemeine Java-Themen 6
C Dynamisches und sortiertes Auslesen von Properties Allgemeine Java-Themen 2
Mr. Pink Erste Schritte Checkstyle.properties Allgemeine Java-Themen 3
B Properties File Liste Allgemeine Java-Themen 3
X Probleme mit meinem Properties Allgemeine Java-Themen 9
T Wahrscheinlich Problem mit log4j.properties Allgemeine Java-Themen 19
D Properties Datei, Eingabequelle Allgemeine Java-Themen 6
S Stilfrage bezüglich Beans mit Collection-Properties Allgemeine Java-Themen 2
C JAR, Pfad und Properties Allgemeine Java-Themen 17
R Properties Datei aus Applikationsverzeichnis lesen Allgemeine Java-Themen 5
T Properties Datei nicht jedes mal neu schreiben? Allgemeine Java-Themen 2
reibi Separator in java.util.Properties-Files Allgemeine Java-Themen 3
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
M Probleme mit UTF-8 und properties Allgemeine Java-Themen 6
C log4j.properties wird nicht verwendet?? Allgemeine Java-Themen 3
T Properties Datei nicht löschbar Allgemeine Java-Themen 8
S Properties binden Allgemeine Java-Themen 2
nrg Knotenpunkte in Properties Allgemeine Java-Themen 9
U Properties in Jar Files Allgemeine Java-Themen 3
S Properties-Dateien anwenden Allgemeine Java-Themen 8
G Alternative zu .properties Dateien Allgemeine Java-Themen 20
nabla Gutes einlesen von Konfigurationsdateien (Properties?) Allgemeine Java-Themen 11
E Properties +SerialPort Allgemeine Java-Themen 9
H Java Properties Allgemeine Java-Themen 5
A kann nicht auf properties außerhalb jar zugreifen Allgemeine Java-Themen 3
T CP Problem: Webstart + Logging properties file + eigener Handler Allgemeine Java-Themen 7
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
M Databinding von Object zu properties-Datei Allgemeine Java-Themen 10
F Properties verschlüsselt speichern Allgemeine Java-Themen 5
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
K settings.properties in den src-ordner schreiben Allgemeine Java-Themen 2
J Wo werden die System properties gespeichert Allgemeine Java-Themen 12
DEvent log4j, commons logging, log4j.properties and co Allgemeine Java-Themen 12
D Ordner mit *.properties in classpath ? Allgemeine Java-Themen 5
P Encoding-Probleme bei Properties-Dateien Allgemeine Java-Themen 5
A Hardware Properties auslesen Allgemeine Java-Themen 10
P Properties liest nicht alles aus Datei aus Allgemeine Java-Themen 17
J Properties sortieren Allgemeine Java-Themen 6
I Properties.contains("Hell*orld"); Allgemeine Java-Themen 14
G Probleme beim Sichern von Properties Allgemeine Java-Themen 2
N Java Properties Allgemeine Java-Themen 14
L "globale" properties Datei Allgemeine Java-Themen 4
V Properties Key als String mit =? Allgemeine Java-Themen 3
G Beans und transiente Properties Allgemeine Java-Themen 4
MQue properties- Datei Allgemeine Java-Themen 2
M Pattern aus Properties Allgemeine Java-Themen 3
R Problem bei schreiben von properties Allgemeine Java-Themen 6
R Properties Datei ändern Allgemeine Java-Themen 4
P log4j: Übersicht der Properties Allgemeine Java-Themen 5
R Properties dateien in Jar beschreiben Allgemeine Java-Themen 2
L properties auslesen funktioniert nicht(java.util.Properties) Allgemeine Java-Themen 3
G properties datei aktualisieren Allgemeine Java-Themen 4
J Properties editieren. Allgemeine Java-Themen 10
V log4j.properties wird in der jar Datei nicht gefunden? Allgemeine Java-Themen 2
V INI Files, Properties etc. Allgemeine Java-Themen 7
K Cast von Properties und Hashmap Allgemeine Java-Themen 9
A Mehrzeiligen Eintrag in Ressourcebundle (.properties-Datei) Allgemeine Java-Themen 8
B Wohin mit log4j.properties Allgemeine Java-Themen 2
B MannoMann Properties Allgemeine Java-Themen 12
G Properties Datei verschlüsseln. WIE? Allgemeine Java-Themen 6
G Einzelne Keys aus Properties-Datei auslesen Allgemeine Java-Themen 4
S Zugriff auf Properties-Datei Allgemeine Java-Themen 10
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
D Konfiguration verwalten Allgemeine Java-Themen 5
S Microservice Projekt verwalten Allgemeine Java-Themen 22
JavaNewbie2.0 Benutzer/Passwörter verwalten Allgemeine Java-Themen 11
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
T Spielkarten Enumeration in KartenDeck verwalten Allgemeine Java-Themen 7
H BlueJ Zustände verwalten Allgemeine Java-Themen 2
H [Logback || log4j] Wie richtig loggen / Log Instanzen verwalten Allgemeine Java-Themen 2
T Daten effizient verwalten Allgemeine Java-Themen 4
H Sehr viele Threads effizient Verwalten Allgemeine Java-Themen 13
C Daten speichern und verwalten Allgemeine Java-Themen 3
G mehrere Threads verwalten? Allgemeine Java-Themen 14
W Einstellungen verwalten Allgemeine Java-Themen 31
S Objekte Massenhaft ;) Wie Objekte und Relationen verwalten? Allgemeine Java-Themen 6
D Wieviel Speicher kann die VM verwalten? Allgemeine Java-Themen 18
J Unbestimmte Menge Objekte erstellen und "verwalten&quot Allgemeine Java-Themen 5
K Ansprechen und Verwalten der Parallelport Schnittsstelle Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben