Ich habe eine ApplicationContext.xml-Datei mit dem folgenden Knoten:
%Vor% Er gibt an, dass beide properties
-Dateien von meiner Anwendung verwendet werden.
Innerhalb von pathConfiguration.properties
sind einige Pfade definiert, beispielsweise:
A PathConfiguration
Bean hat für jeden Pfad Einstellungen.
Das Problem ist: Wenn einige dieser obligatorischen Pfade nicht definiert sind, wird kein Fehler ausgelöst. Wie und wo sollte ich mit diesem Problem umgehen?
Das Standardverhalten des PropertyPlaceholder, der über <context:property-placeholder ... />
konfiguriert wird, löst eine Ausnahme aus, wenn eine Eigenschaft nicht aufgelöst werden kann, wenn sie an einer bestimmten Stelle benötigt wird, solange Sie sie nicht anders konfigurieren.
Für Ihren Fall, wenn Sie eine Bean haben, die einige Eigenschaften wie diese benötigt, wird sie fehlschlagen, wenn der Wert nicht aufgelöst werden kann. Zum Beispiel so:
%Vor% Wenn Sie den PropertyPlaceholder lockern und nicht eine Ausnahme auslösen möchten, wenn eine Eigenschaft nicht aufgelöst werden kann, können Sie den PropertyPlaceholder so konfigurieren, dass nicht auflösbare Eigenschaften wie diese <context:property-placeholder ignore-unresolvable="true" ... />
ignoriert werden.
Eine Möglichkeit, die Verifizierung von Parametern zu verstärken, ist die Umstellung auf eine klassische PropertyPlaceholderConfigurer Bean in Ihrer Beans-Datei.
Das PropertyPlaceholderConfigurer
hat Eigenschaften, mit denen Sie sein Verhalten optimieren und festlegen können, ob eine Ausnahme ausgelöst wird oder nicht, wenn ein Schlüssel fehlt (siehe setIgnoreUnresolvablePlaceholders
oder setIgnoreResourceNotFound
).
Wenn ich mich richtig erinnere, wird in Spring 2.5 nur das location-Attribut für <context:property-placeholder>
unterstützt (die Dinge könnten sich allerdings geändert haben).
Ich bin mir nicht sicher, ob ich Ihr Problem vollständig verstehe, aber es gibt wahrscheinlich eine Vielzahl von Möglichkeiten, dies zu erreichen. Eine wäre es, die Pfade durch Verwendung der Konstruktorinjektion zwingend zu machen. Im Konstruktor könnten Sie dann die eingehenden Werte überprüfen und, wenn null, zum Beispiel BeanInitializationException-Instanzen werfen.
Tags und Links java spring error-handling javabeans