2017-08-23 1 views
0

Je souhaite ajouter une propriété personnalisée au application.yml de ma configuration Cloud. Les commentaires dans le fichier disent que c'est pour toute la configuration partagée. Toutefois, lorsque je le fais, il provoque la liaison des propriétés à JHipsters ApplicationProperties propres à l'échec de la classe n'a pas la propriété en écriture correcte.Ajout de propriétés à JHipster Cloud application.yml entraîne l'échec de la configuration du registre

application.yml

application: 
    clients: 
     - Foo 

Stacktrace:

Caused by: org.springframework.boot.bind.RelaxedBindingNotWritablePropertyException: Failed to bind 'application.clients[0]' from 'file:central-config/localhost-config/application.yml' to 'clients[0]' property on 'io.github.jhipster.registry.config.ApplicationProperties' 

Répondre

1

De la documentation JHipster:

propriétés spécifiques à l'application Votre application générée peut également avoir ses propres propriétés Spring Boot. Ceci est fortement recommandé, car il permet la configuration de l'application en toute sécurité, ainsi que l'auto-complétion et la documentation au sein d'un IDE.

JHipster a généré une classe ApplicationProperties dans le package config , qui est déjà préconfigurée, et il est déjà documenté au fond du application.yml, application dev.yml et fichiers d'application-prod.yml. Tout ce que vous devez faire est de coder vos propres propriétés spécifiques . (Souligné par l'auteur)

Avez-vous fait cette étape et ajouté vos propres propriétés à ApplicationProperties.java? Il semblerait que vous devriez avoir une propriété du type List<String> clients. Si ce n'est pas le cas, c'est qu'il échoue, car il tente de lier une propriété de configuration à la classe ApplicationProperties, mais la classe ne contient pas de propriété pour la stocker.

+0

Le problème est pas avec les ApplicationProperties de mon projet, il est la classe de propriétés dans l'application du Registre. Je lance le registre via docker, qui utilise cette image: jhipster/jhipster-registry: v3.1.0. Le ApplicationProperties au sein de l'application à l'intérieur est ce que les pauses. – ThisIsNoZaku

+1

Eh bien, le problème est toujours le même. Le 'ApplicationProperties' (https://github.com/jhipster/jhipster-registry/blob/master/src/main/java/io/github/jhipster/registry/config/ApplicationProperties.java) dans ce projet n'a pas de propriété appelée clients. Vous ne pouvez donc pas définir une valeur dans application.properties qui n'existe pas ici. – Ben

+0

Que devez-vous exactement faire en ajoutant ces propriétés client au registre? – Ben

0

Les propriétés de démarrage Spring personnalisées doivent toujours être définies dans une classe @ConfigurationProperties dans l'application afin que leur valeur puisse être configurée dans le fichier yml. Ceci est bien documenté dans la documentation de démarrage du printemps:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

+0

Ce sont les propriétés d'application dans le registre JHipster lui-même qui se brisent, pas les miennes. – ThisIsNoZaku

+0

Vous devriez certainement avoir précisé dans votre question que l'erreur était dans le registre! Alors c'est normal car 'central-config/application.yml' est chargé par toutes les applications y compris le registre qui se configure lui-même. Vous devez donc modifier le fichier ApplicationProperties du registre pour ajouter la propriété 'clients' que vous avez ajoutée. –

+0

J'ai mentionné le problème n'est pas dans mon code. – ThisIsNoZaku