2015-05-03 13 views
7

Sto seguendo questo link: http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_client_side_usageprimavera cliente nuvola config non caricare la configurazione dal server di configurazione

Ho provato questo ancora e ancora e non vedendo cliente primavera nuvola sta caricando configurazione dal server cloud, si prega di aiuto per vedere dove è l'errore:

POM:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 

    </dependency> 
</dependencies> 

Applicazione:

@Configuration 
@EnableAutoConfiguration 
@RestController 
public class ConfigclientApplication { 

    @Value("${spring.cloud.config.uri}") 
    String url; 

    @Value("${production.host}") 
    String host; 


    @RequestMapping("/") 
    public String home() { 
     return "Host is => " + this.host ; 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(ConfigclientApplication.class, args); 
    } 
} 

bootstrap.properties: spring.cloud.config.uri = http://localhost:8888

  1. Il server di configurazione è buona: http://localhost:8888/spirent/default

    { "name": "Spirent", "Profili": [ "default"], "label": "master", "propertySources": [{ "name": "classpath: /spirent.yml", "fonte": { "production.host": "server1", "produzione. porta ": 9999," production.value1 ": 12345," test.host ":" server2.com "," test.port ": 4444," test.value ":" hello123 "}}}}

  2. ora http://localhost:8080/ non può essere avviato affatto.

    Errore durante la creazione di bean con nome 'configclientApplication' Sembra che l'auto inject di @Value non riesca a trovare il valore di ambiente production.host.

Come posso leggere la configurazione nel client una volta caricato dal server di configurazione?

Grazie per il vostro aiuto.

+0

Se si sta seguendo un tutorial poi seguire un tutorial . Il tutorial menziona che dovresti usare la dipendenza 'spring-cloud-starter' non il' spring-cloud-config-client'. Per l'applicazione non importa da dove proviene la configurazione, sono solo proprietà a cui è possibile accedere come qualsiasi altra proprietà tramite 'Ambiente' o con' @ Valore'. –

+0

Sono passato al client o allo starter, ma non riesco a trovare il valore di configurazione nel server di configurazione, qualche idea? – user3006967

risposta

4

Come implica Deinum, farei in modo di avere il client configurato con il genitore come spring-cloud-starter-parent e dargli una versione. I plugin Maven forniti da spring cloud non funzionano quando si includono le dipendenze e si ricorda che cloud è un progetto diverso da quello di avvio. Cambiarlo in:

<parent> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-parent</artifactId> 
    <version>1.0.0.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 

In secondo luogo, come una nuova disciplina (e probabilmente non il problema qui), mi piacerebbe utilizzare la nuova annotazione sulla vostra applicazione, invece di @Configuration e @EnableAutoConfiguration

@SpringBootApplication 

Terzo, controlla due volte @EnableConfigServer sul tuo server di configurazione

In quarto luogo, assicurati che il tuo bootstrap.immobili in vostro cliente è il tuo nome dell'applicazione primavera specificato:

spring.application.name=spirent 

Infine, se è stato utilizzato il progetto di esempio primavera-cloud-config, c'è un utente predefinito e la password di protezione che si deve impostare nel vostro URI:

http://user:[email protected]:8888 

In caso contrario, provare a partire dal progetto primavera-cloud-config si trova qui per garantire la vostra configurazione del server è configurato correttamente:

https://github.com/spring-cloud/spring-cloud-config 
+0

Grazie @RubesMN, la correzione cruciale è stata aggiunta: spring.application.name = myapp a bootstrap.properties, e quindi posso vedere - {"profiles": [], "configService: classpath: /myapp.yml": { "my.otherprop": "myotherval"}, "da/env. Ora, puoi rispondere ad un'altra domanda, come posso accedere al valore di configurazione nel client di configurazione? Ho provato @Value ($ {profiles}) e il codice non può inizio, lamentando l'iniezione sbagliata. Grazie – user3006967

+0

Puoi accedere usando una dichiarazione di variabile annotata con '@Value (" $ {my.otherprop} ")' o tramite una classe annotata con '@Component @ConfigurationProperties (prefix =" my ")' contenente una variabile denominata 'otherprop'. Assicurati di contrassegnare la risposta come corretta per gli altri. – RubesMN

+0

Inoltre noto che le variabili annotate '@ Value' non vengono aggiornate a meno che il componente spring in cui sono contenute abbia' @ RefreshScope' e viene chiamata una chiamata all'endpoint del client/aggiornamento. Nessuno dei due I valori di configurazione '@ Value' e' @ ConfigurationProperties' vengono aggiornati dal server di configurazione quando/env viene chiamato come scritto nella documentazione. – RubesMN