Format
Werte, die aus einer einfachen Zeichenkette gelesen werden können, werden über eine @Format
-Annotation an der Eigenschaft deklariert:
public class A {
public interface Config extends ConfigurationItem {
@Format(HexEncodedColor.class)
Color getBackgroundColor();
}
...
}
Da der Wertetyp Color
keine Unterkonfiguration ist, kennt das XML-Binding keinen Standardweg, um eine Instanz von Color
aus der Konfiguration zu lesen. Aus diesem Grund wird die Eigenschaft background-color
mit der @Format
-Annotation versehen. Diese ist dafür verantwortlich, den Konfigurationswert aus seiner textuellen Repräsentation in seinen Objektwert zu parsen und entsprechend umgekehrt eine textuelle Repräsentation für ein Objekt zu erzeugen. Dann ist es möglich, beim Default-XML-Binding zu bleiben und über folgendes XML-Document zu konfigurieren:
<a-config background-color="#ff0000"/>
Stammt der Wertetyp nicht aus einer Bibliothek, sondern wird ebenfalls durch die Anwendung definiert, kann die @Format
-Annotation auch direkt an die Wert-Klasse geschrieben werden. Dann kann sie an den Verwendungen entfallen. Alle Properties, die diesen Typ benutzen verwenden dann konsistent dasselbe Format:
@Format(MyHexEncodedColor.class)
public class MyColor {
...
}
public interface Config extends ConfigurationItem {
MyColor getBackgroundColor();
}