Kann ich die manuell laden @ConfigurationProperties ohne die Feder AppContext?
Gibt es eine Möglichkeit, eine Klasse zu laden, die mit gekennzeichnet @ConfigurationProperties
ohne Verwendung einer Feder Kontext direkt? Grundsätzlich will ich wiederverwenden, der alle intelligenten Logik, dass der Frühling tut, aber für eine Bohne, die ich manuell instanziieren außerhalb der Feder-Lebenszyklus.
Habe ich eine Bohne, die Lasten gerne im Frühjahr (Boot) und ich kann Spritzen Sie diese in meinen anderen Dienst Bohnen:
@ConfigurationProperties(prefix="my")
public class MySettings {
String property1;
File property2;
}
Sehen, der Frühling docco für mehr info http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-command-line-args
Nun brauche ich aber Zugriff auf die bean aus einer Klasse, die erstellt wird, die außerhalb des Frühlings (von Hibernate). Die Klasse wird erstellt, so früh in der app-Startprozess, dass Spring Boot noch nicht aus dem Anwendungskontext zur Verfügung durch die klassischen lookup-helper-Methoden oder roll-meine-eigene statische Referenzen.
Also habe ich stattdessen etwas tun wollen wie:
MySettings mySettings = new MySettings();
SpringPropertyLoadingMagicClass loader = new SpringPropertyLoadingMagicClass();
loader.populatePropertyValues(mySettings);
Haben und MySettings am Ende mit allen seinen Werten geladen, von der Befehlszeile aus, Eigenschaften, app.Eigenschaften, etc. Gibt es eine Klasse, die im Frühjahr die soetwas macht oder ist das ganze zu verwoben mit dem Anwendungs-Kontext?
Natürlich könnte ich auch einfach das laden der Properties-Datei selbst, aber ich möchte wirklich zu halten, Spring Boot die Logik um, indem Sie das Befehlszeilen Variablen (z.B.-mein.eigenschaft1=xxx), system-Variablen oder-Anwendung.Eigenschaften oder sogar eine yaml-Datei, sowie seine Logik um entspannt verbindlich und Typ-Konvertierung (z.B. property2 ist eine Datei) damit das ganze funktioniert genauso, als wenn im Frühling Kontext.
Möglich oder Wunschtraum?
Vielen Dank für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den "Zauber" - Klasse, die Sie suchen, ist
PropertiesConfigurationFactory
. Aber ich würde die Frage Ihrer Notwendigkeit - wenn Sie nur brauchen zu binden, dann Spring sollte in der Lage sein, um es für Sie tun, und wenn Sie lifecycle-Probleme, es wäre besser, um die (in den Fall, Sie brechen etwas anderes).Ich hatte das gleiche "Problem".
Hier ist, wie ich es gelöst in SpringBoot version 1.3.xxx und 1.4.1.
Sagen wir mal wir haben die folgenden yaml-Konfigurationsdatei:
und haben wir die folgenden
ConfigurationProperties
:Dann, um die "Magische" Dinge des Frühlings Boot programmgesteuert (z.B. laden einige Eigenschaften, die in einer statischen Methode), die Sie tun können: