Main Page

From tarent-config (inactive) Wiki
Jump to: navigation, search

Die Tarent-Config ermöglicht das Lesen von Konfigurationswerten aus einer Java-Property-Datei oder einem Ordner mit Java-Property-Dateien.

Wichtige Änderungen / Erweiterungen

  • v0.7.0 -> New Configuration Implementation PropertyFolderConfig
  • v0.6.0 -> move the project to evolvis.org
  • v0.5.2 -> Support for Key-Prefix in TarentConfigPlaceholderConfigure
  • v0.5.1 -> Bugfixes & more UnitTests
  • v0.5.0 -> Spring PlaceholderConfigure support via TarentConfigPlaceholderConfigure
  • v0.4.1 -> Erweiterung um Sub-Konfigurationen und damit potenzieller Mandantenfähigkeit
  • v0.3.2 -> API Fix, Überschreiben von Konfigurationen, Native-Types Methoden
  • v0.2.0 -> Broken API / Impl.
  • v0.1.6 -> Realisierung der PropertyConfig für Property-Files sowie Fallback auf Classpath

Verwendung im Projekt

Die Tarent-Config ist einfach gehalten und entsprechend gestaltet sich der Einsatz im Projekt. Es gibt aktuell zwei Implementierungen um Konfiguration zu laden:

  1. PropertyConfig
  2. PropertyFolderConfig

Voraussetzung

Für die Verwendung muss die Config im Classloader des Projekt entsprechend eingebunden sein. Für den Maven-Ansatz gibt es unter Maven Eintrage die nötigen Details.

Konfiguration

Die zu verwendende Konfiguration erfolgt mittels System-Property und ist im Detail von der Implementierung abhängig.

System-Property Required Default Erklärung
tarent.config.impl Nein org.evolvis.config.PropertyConfig Definiert die zu verwendende Tarent-Config Implementierung und wird beim Aufruf von ConfigFactory#getConfiguration() ausgewertet.

Beispiele:

-Dtarent.config=/etc/projectX/config.properties

-Dtarent.config.impl=org.evolvis.config.PropertyFolderConfig -Dtarent.config=/etc/liferay

Wird die System-Property für die Implementierung nicht gesetzt, so gilt folgender Default: tarent.config.impl=org.evolvis.config.PropertyConfig

Die konkreten Konfigurationseinstellungen sind auf den spezfischen Seiten zu PropertyConfig, PropertyFolderConfig und TarentConfigPlaceholderConfigure beschrieben.

Quick-Start

1. Eine Property-Datei '/tarent.properties' im Ressource-Folder des Projekts anlegen, mit dem Inhalt:

 key=value

2. Die Tarent-Config per Maven oder Direkt im Classpath einbinden.

3. Einer Config-Instanz in einer Java-Klasse erzeugen:

 final Configuration config = ConfigFactory.getConfiguration();

4. Abfragen eines Konfigurationswerts mittels eines Keys:

 final String value = config.get("key");

5. Abfragen eines Konfigurationswerts mittels Keys und Default-Wert falls der Key nicht gefunden wird:

 final String default = config.get("key2", "default");

Zusammensetzung der Keys

Es wird empfohlen, den Keys den Projektnamen (+Komponente) voran zu stellen, um Kollisionen zwischen Projekten und deren Komponenten zu vermeiden. Darüber hinaus wird folgendes Schema empfohlen:

<projekt>.<komponente>.[service.].<setting>=<value>

z.B.

osiam.frontend.backendEndpoint=http://osiam.host/backend/...

Integration in Spring

Es gibt aktuell zwei Wege die Tarent-Config in der Spring-Konfiguration einzubinden, mittels des TarentConfigPlaceholderConfigure und als Spring-Bean + EL. Es wird an dieser Stelle der TarentConfigPlaceholderConfigure empfohlen.

Spezifische Features

Es gibt mehrere Features, die über das Configuration-Interface verfügbar sind, jedoch (noch) nicht in allen Implementierungen verfügbar sind / unterstützt werden. Die Unterstützung der Features und die genaue Funktionsweise wird auf der jeweiligen Unterseite behandelt.

Sub-Konfigurationen

Eine Sub-Konfigurationen stellt eine Ableitung einer Basis-Konfigurationen dar, indem ein Teil- oder Gesamtmenge geändert / überschreiben wird. Der Standard-Use-Case sind Anwendungen, die zur gleichen Zeit mehrere (teilweise) unterschiedliche Konfigurationen benötigen. Dies ist z.B. der Fall für Systeme, wo Mandantenfähigkeit benötigt wird.

Die konkrete Funktionsweise und deren Bedingungen definieren die entsprechenden Implementierungen. Allen Implementierungen ist gemein, dass sie einen eindeutigen Bezeichner benötigen, um die Ableitung durchführen zu können und die Ableitung immer mittels Configuration#getSubConfiguration(String) erzeugt wird.

# Beispiel für die Ableitung einer Sub-Konfigurationen basierend auf einer Basis-Konfiguration
final Configuration baseConfig = ConfigFactory.getConfiguration();
final Configuration subConfig = baseConfig.getSubConfiguration("uniqueID");

Maven Eintrage

Benötigtes Repository:

 <repository>
   <id>evolvis-release-repository</id>
   <url>http://maven-repo.evolvis.org/releases/</url>
   <layout>default</layout>
 </repository>

Benötigtes Artefakt:

 <dependency>
   <groupId>org.evolvis</groupId>
   <artifactId>config</artifactId>
   <version>1.0.0</version>
 </dependency>

Note: Find the current version here: https://evolvis.org/scm/viewvc.php/tags/?root=tarent-config