J'ai un fichier properties dans lequel les valeurs sont séparées par des virgules. Je suis en mesure d'obtenir les valeurs comme Object comme ci-dessous. Quelqu'un pourrait-il me dire comment séparer les valeurs et les obtenir dans String.
@PropertySource( value = "classpath:test1.properties", name = "test1" )
AbstractEnvironment ae = (AbstractEnvironment)env;
org.springframework.core.env.PropertySource test1Source =
ae.getPropertySources().get("test1");
Properties propsTest1 = (Properties)test1Source.getSource();
for(Object key : propsTest1.keySet()){
System.out.println("Properties file======> propsTest1.get(key));
}
Code final
key-1 = value1,value11 key-2 = value2,value22 key-3 = value3,value33 key-4 = value4,value44
p >
3 Réponses :
Vous pouvez utiliser l'annotation @Value avec @PropertySource pour obtenir la valeur d'une propriété. De plus, vous pouvez utiliser Spring Expression pour le diviser en liste, par exemple:
@PropertySource( value = "classpath:test1.properties", name = "test1" )
public class PropertyClass {
@Value("#{'${key-1}'.split(',')}")
private List<String> key1Values;
}
Cela vous donnerait la liste de toutes les valeurs configurées par rapport à key-1 .
Existe-t-il un moyen d'obtenir les valeurs de manière dynamique plutôt que de créer une variable pour chaque clé?
Ne pensez pas qu'il existe un moyen de le faire à moins que vous ne sous-classiez PropertyPlaceholderConfigurer , lisez ici: stackoverflow.com/ a / 11416312/1120793
Cette réponse est bonne. Mais j'ai accepté la réponse de Vinay parce qu'elle a résolu mon problème. J'ai également voté pour votre réponse. Merci
Vous pouvez essayer quelque chose comme ci-dessous.
Properties propsTest1 = (Properties)test1Source.getSource();
for(Map.Entry<Object, Object> e : propsTest1.entrySet()){
String value = (String)e.getValue();
String[] values = value.split(",");
// If you have spaces as between values, you have to take care of it.
}
J'aime mieux la réponse de @Darshan Mehta.
Merci. Cela a aidé.
.properties
@Value("#{${keys}}") private Map<String,String> keys;
Code final
keys={key-1:'value1',key-1:'value2',....}
Vous pouvez également :
@ConfigurationProperties(prefix="map")
public class YourConfig {
private List<String> keys = new ArrayList<String>();
public List<String> getKeys() {
return this.servers;
}
}
map.key[0] = value1,value11 map.key[1] = value2,value22 map.key[2] = value3,value33 map.key[3] = value4,value44
Spring Expression Language ( SPEL < / a>) aidera votre cas. Consultez cette question pour un aperçu: stackoverflow.com/questions/12576156/...
veuillez également partager votre résultat attendu.