2016-07-07 22 views
0

Ich habe eine Spring-Boot-Anwendung, die eine Menge von Eigenschaften in einer Datei .yml definiert hat. Ich bewege mich davon weg, die Eigenschaften in einer Datei zu haben, um sie in einer Wolke zu haben, deshalb benutze ich die Schlüssel/Wert-Funktion im Frühling Cloud Consul.Korrekter Weg zum Laden von Werten/Eigenschaften aus der Feder Cloud Consul

Ich bin in der Lage, einen Wert für einen bestimmten Schlüssel von Konsul abzurufen, aber der einzige Weg, ich dokumentiert habe gesehen, und nur so, wie ich in der Lage gewesen, es zu tun ist wie so:

@Autowired 
private Environment env; 

    @RequestMapping("/test") 
    String home() { 
     return env.getProperty("test.property"); 
    } 

Das ist in Ordnung und gut, aber ich einige bestehenden Klassen, die noch festgelegt sind Eigenschaften, die alte Art und Weise zu laden:

@Value("${test.property}") 
String testProperty; 

nach dem Hinzufügen der Abhängigkeit für Frühjahr Cloud Konsul zu meinem Projekt, erhalte ich neue Fehler zu sagen, dass alle diese Eigenschaften nicht sein aufgelöst. Ich nehme an, es liegt daran, dass Spring Boot die Consul-Abhängigkeit erkennt und entweder die Yml-Datei oder Teile davon ignoriert.

Gibt es eine Möglichkeit, diese Eigenschaften von Konsul laden zu lassen, ohne Code in den Klassen ändern zu müssen? Oder muss ich diese Klassen ändern, um dem Beispiel zu folgen, das das Objekt env verwendet?

Auch ein weiterer Einblick in die Funktionsweise von Federwolkenconsul mit Federmanschette für diesen speziellen Zweck wäre sehr willkommen. Es gibt nicht viel Dokumentation darüber.

+0

Wenn Sie es mit dem Spring Cloud Config Client verwenden, sollte der '@ Value' einfach funktionieren. –

+0

@ M.Deinum Ich bin nicht, ich benutze Spring Cloud Consul – Seephor

+0

Das ist die Server-Seite, Frühling Cloud Consul kann ziemlich leicht mit Feder Cloud-Konfiguration integrieren und dann bekommen Sie out-of-the-Box, was Sie wollen. Siehe http://cloud.spring.io/spring-cloud-consul/spring-cloud-consul.html (der letzte Abschnitt). –

Antwort

2

Ich konnte dies zur Arbeit bringen, aber es war ein wenig schwierig. Sie müssen die Federwolke Konsul Starter Abhängigkeit hinzugefügt haben. Ich hatte nur die Feder Cloud Consul Konfiguration Abhängigkeit.

ich Konsul Config Eigenschaften sowohl meine application.yml und bootstrap.yml hinzuzufügen hatte, legen Sie die Eigenschaften in meiner Bootstrap nur das Format und die Datenschlüssel:

spring: 
    cloud: 
    consul: 
     config: 
     format: YAML 
     data-key: data 

Dies sagt Frühjahr Boot ein laden yaml blob, das ist der Wert von Schlüsseldaten in meinem Anwendungskonfigurations-Cloud-Verzeichnis.

Die Konfiguration in meiner application.yml ist der Standard, den sie im Beispiel bereitstellen. Nachdem ich diese Konfigurationen und das @ autoconfiguration-Tag zu meiner Hauptanwendungsklasse hinzugefügt hatte, fing alles an zu arbeiten.