Je veux mapper des valeurs entre un fichier YAML avec un mappe
pays.yml code> fichier: p >
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties("entries")
public class SampleConfig {
private Map<String, List<String>> map = new HashMap<>();
@Bean
public void bean1(){
System.err.println("map has size: "+map.size());
}
}
3 Réponses :
En supposant que votre application choisisse la configuration à partir de pays.yml code> (je vérifierais cela aussi) - Vous avez besoin de getters et de setters pour le faire fonctionner. Add Ajouter:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties("entries")
public class SampleConfig {
private Map<String, List<String>> map = new HashMap<>();
public Map<String, List<String>> getMap(){
return map;
}
public void setMap(Map<String, List<String>> map){
this.map=map;
}
}
J'ai effectivement ajouté @propertysource ("ClassPath: country.yml") code> aussi, mais la taille de la carte est toujours 0
Il y a deux problèmes p>
1) Par défaut Spring recherchera Pour résoudre le problème ci-dessus, vous pouvez utiliser 2) Vous pouvez utiliser 24.7.4 HORFCOMMINATIONS YAML Vous ne pouvez pas utiliser Comment lire le fichier YML à l'aide du ressort @properTysource P> Application.yml code> ou
Application.Property code> dans les emplacements par défaut P>
application.yml code> au lieu de
pays.yml code> p>
@propertysource code> pour charger n'importe quel fichier de propriétés externe, mais
yml code> n'est pas pris en charge avec cette annotation p>
@properTysource code> avec
YML code> fichier p>
J'ai essayé le @propertysource code> plus avec des setters et getters comme d'autres suggérées, il ne fonctionne toujours pas
@properTysource code> ne prend pas explicitement en charge YamL.
mis à jour ma réponse, il prend le temps de rassembler toutes les informations @Hades
Ceci fonctionnera et imprimera mais lisez sûrement la réponse de Deadpool. strong> p> < p> Le hack em> est ici pour remplacer le nom de la configuration par défaut "Application" par "Pays" P> Dans l'exemple, je l'ai fait en la définissant via une propriété système, mais Démarrer votre application via
CountryData: {my = [fr, zh]} code>
java -jar mycountryapp.jar --spring.config.name = pays code> devrait fonctionner parfaitement p>
Merci! J'ai trouvé une autre façon qui utilise PropertySourceFactor code> à lire dans le fichier YAML comme suggéré dans ce lien MDEINUM.GITUB.IO/2018-07-04-PROPERTSOURCE-Avithan-yaml-files
Je pense que vous avez besoin de getter / setter pour que cela fonctionne ..
Pourquoi ce
pays.yml code> n'est pas
application.yml code>?