PropertyResolver Property Solver hat hauptsächlich zwei Funktionen:
Holen Sie sich den entsprechenden Eigenschaftswert von PropertyValue -Eigenschaften (getProperty) über den Immobiliennamen im PropertyName.
Ersetzen Sie den Immobilien -Platzhalter im Format $ {PropertyName: defaultValue} durch den tatsächlichen Wert (ResolvePlace -Hälter).
HINWEIS: Die von GetProperty erhaltenen Eigenschaftswerte sind alle Werte, nachdem ResolvePlace -Bewohner für den Ersatz für Platzhalter aufgerufen werden.
Das Komponentensystemdiagramm lautet wie folgt:
PropertyResolver -Schnittstelle:
Diese Schnittstelle definiert alle Funktionen, die eine Komponente hat. Eine davon ist, den entsprechenden Wert über den Schlüssel zu erhalten. Wenn der Wert nicht erhalten werden kann, gibt es 3 Optionen: Rückgabe eines Nullwerts, verwenden Sie den angegebenen Standardwert oder werfen Sie eine illegale staatliche Ausnahme aus. Der erhaltene Wert ist standardmäßig der Zeichenfolge -Typ. Natürlich kann es auch als Angabe eines Typs angesehen werden, der vom ConversionService für die Typumwandlung abhängt.
Es gibt ein weiteres Problem: Der Eigenschaftswert kann Platzhalter im Format von $ {} enthalten. Daher wurde eine andere Funktion der Schnittstelle hinzugefügt, um Platzhalter im Eigenschaftswert zu ersetzen (Hinweis: Platzhalter sind für Attributnamen nicht zulässig, und selbst wenn sie vorhanden sind, werden Komponenten nicht als Platzhalter ersetzt). Wenn der Platzhalter nicht ersetzt werden kann, gibt es zwei Optionen: Halten Sie ihn so, wie er ist oder eine illegale Parameterausnahme auswirft. Die spezifische Schnittstelle lautet wie folgt:
Konfigurierbare Antriebs -Schnittstelle:
Diese Schnittstelle definiert, wie die Komponente selbst konfiguriert ist. Zum Beispiel: Ich habe gerade erwähnt, dass Sie beim Wert von Wert einen beliebigen Typ angeben können, der vom ConversionService für die Typumwandlung abhängt. Die aktuelle Schnittstelle bietet die Einstellungen und den Erwerb von ConversionService. Darüber hinaus können Sie das Format von Immobilien -Platzhaltern konfigurieren, darunter: Platzhalterpräfix (Standard ist "$ {"), Platzhaltersuffix (Standard ist "}"), Platzhalterwertabscheider (Standard ist ":", verwendet, um den Eigenschaft zu trennen, und defaultValue). Die Komponente kann auch festlegen, welche Attribute existieren müssen, und kann auch überprüfen, ob die Attribute, die es wirklich existieren müssen, wirklich existieren (falls sie nicht existieren, eine Ausnahme wird ausgelöst). Die spezifische Schnittstelle lautet wie folgt:
AbstractPropertyresolver -Klasse:
Zusammenfassung Implementierungsklasse für die obigen zwei Schnittstellen. Es implementiert alle Methoden der Konfigurationspropertyrer -Schnittstelle. In Bezug auf die PropertyResolver -Schnittstellenmethode gibt es 3 GetProperty -Methoden, die in Unterklassen implementiert werden müssen (andere überlastete Methoden nennen diese 3 Methoden):
String GetProperty (String -Schlüssel); <T> T GetProperty (String -Schlüssel, Klasse <T> TargetType); <T> Klasse <T> getPropertyAsClass (String -Schlüssel, Klasse <T> Tattyptype);/*** Die aktuelle Klasse definiert auch eine zusätzliche abstrakte Methode, um den erhaltenen Wert (No Placthere -Austausch) direkt zurückzugeben. * Die allgemeine GetProperty -Methode ersetzt den Platzhalter standardmäßig im Wertwert und gibt ihn zurück. */Protected Abstract String getPropertyasrawstring (String -Schlüssel); Wie der Ersatz für den Platzhalter von Immobilien wird mit Hilfe von zwei ImmobilienplaceHolperHelper-Immobilien-Platzhalter-Assistenten (Tool Class) -Objekte (Tool Class) durchgeführt. Eines dieser beiden Objekte ist ein strenger Modus und das andere ist der Nicht-Streng-Modus.
PropertySourcesPropertyresolver -Klasse:
Diese Klasse ist die einzige vollständige Implementierungsklasse im System. Es nimmt die PropertySources Property Source Collection (Liste <SperticSource> intern gehaltene Eigenschaftenquellenliste) als Quelle des Eigenschaftswerts an, iteriert jede Eigenschaftsource in der Reihenfolge und kehrt zurück, wenn sie einen Nicht-Null-Eigenschaftswert erhält.