Oft ist es nötig Implementierungen auszutauschen, diese Implementierungen benötigen oft zusätzliche Properties. Um die Austauschbarkeit und das Zuweisen von weiteren Properties zu vereinfachen, ist es möglich Instanzen einer Klasse mit der Angabe eines Properties von MyCoRe erzeugen zu lassen.
Für das Erzeugen einer Instanz kann die statische Methode getInstanceOf in der Klasse org.mycore.common.config.MCRConfiguration2 verwendet werden.
Java-Code:
|
|
|
|
Falls die Klasse org.gbv.MeineKlasse zusätzliche Properties benötigt, dann kann man diese über die
Annotation @MCRProperty
einem Feld oder einer Setter-Methode zuweisen. Das Feld muss public sein und den
Typ String haben. Die Setter-Methode muss public und vom Typ void sein und als einzigen Parameter einen
String akzeptieren.
|
|
|
|
In dem oberen Beispiel würde der Inhalt bar des Properties Mein.Interface.Implementierung.Foo an die Methode setFoo übergeben werden. Falls das Property nicht gesetzt ist, dann wird ein Fehler geworfen, weil die Properties als benötigt (required=true) voreingestellt sind. Wird ein Property nicht unbedingt benötigt, dann kann man die required auf false setzen, wie in dem oberen Beispiel das Property Foobar.
Falls man alle Properties benötigt gibt es die Möglichkeit mit einem Wildcard-Symbol als Namen eine Map zu bekommen. Die Schlüssel sind dabei die Namen (Foo, Foobar) und die Werte der Inhalt der Properties (bar, baz).
Die Reihenfolge der Initialisierung ist:
@MCRPostConstruction
annotierten Methode
Da man Felder eines Objektes nicht zuweisen kann bevor der Konstruktor aufgerufen wurde, aber man für die
Initialisierung trotzdem die zugewiesenen Felder benötigt, gibt es die Möglichkeit eine weitere Methode
nach der Initialisierung aufrufen zu lassen. Dazu muss die Methode public sein und einen String-Parameter
besitzen und mit @MCRPostConstruction
annotiert sein.
|
|
Das Property in dem die Klasse definiert wurde, wird der annotierten Methode als parameter übergeben. Im oberen Beispiel wäre das Mein.Interface.Implementierung.