2015-10-19 4 views
0

Je dois intégrer une liste dans un fichier de configuration YAML dans Spring Boot, et je ne vois pas comment procéder.Spring Boot YAML config and list

Je l'ai déjà vu d'autres questions connexes: Spring Boot yaml configuration for a list of strings

Et la même question. J'ai appliqué la solution et travaillé autour, et trouvé la solution un peu difficile.

Existe-t-il un moyen de faire fonctionner les listes avec @Value?

Et si ce n'est pas maintenant, est-ce prévu dans le futur?

Merci beaucoup. Selon cette documentation, vous pouvez faire une liste en yaml.

+0

Le format de fichier des propriétés serait-il plus simple que YAML? – Jay

+0

Il semble que cela n'a pas été réparé au printemps et il n'y a pas de plans à faire: https://github.com/spring-projects/spring-framework/pull/747 – Marged

+0

Dommage, car la façon de le faire fonctionner est très rusé. Peut-être que je vais faire ma liste en String avec virgule, même si je pense que ce n'est pas un bon moyen: / – Tetragramato

Répondre

2

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml

listes YAML sont représentés comme des clés de propriété avec déréférenceurs [d'index], par exemple ce YAML:

my: 
    servers: 
     - dev.bar.com 
     - foo.bar.com 

se transformerait en ces propriétés:

my.servers[0]=dev.bar.com 
my.servers[1]=foo.bar.com 

Pour lier à des propriétés telles que En utilisant les utilitaires Spring DataBinder (ce que fait @ConfigurationProperties), vous devez avoir une propriété dans le bean cible de type java.util.List (ou Set) et vous devez soit fournir un setter, soit initialiser i t avec une valeur mutable, par ex. cela va se lier aux propriétés ci-dessus

@ConfigurationProperties(prefix="my") 
public class Config { 

    private List<String> servers = new ArrayList<String>(); 

    public List<String> getServers() { 
     return this.servers; 
    } 
}