Je charge les attributs de propriétés d'un .properties
fichier en utilisant Spring comme suit:
file: elements.properties
base.module.elementToSearch=1
base.module.elementToSearch=2
base.module.elementToSearch=3
base.module.elementToSearch=4
base.module.elementToSearch=5
base.module.elementToSearch=6
Le fichier XML de printemps
file: myapplication.xml
<bean id="some"
class="com.some.Class">
<property name="property" value="#{base.module.elementToSearch}" />
</bean>
Et ma classe.Java
file: Class.Java
public void setProperty(final List<Integer> elements){
this.elements = elements;
}
Mais lors du débogage, les éléments de paramètre n'obtiennent que le dernier élément de la liste. Il existe donc une liste d'un élément avec la valeur "6", au lieu d'une liste de 6 éléments.
J'ai essayé d'autres approches, comme ajouter de la valeur uniquement #{base.module}
mais il ne trouve aucun paramètre dans le fichier de propriétés.
Une solution consiste à avoir dans le fichier elements.properties une liste séparée par des virgules, comme:
base.module.elementToSearch=1,2,3,4,5,6
et utilisez-le comme une chaîne et analysez-le, mais existe-t-il une meilleure solution?
Si vous définissez votre tableau dans le fichier de propriétés, procédez comme suit:
base.module.elementToSearch=1,2,3,4,5,6
Vous pouvez charger un tel tableau dans votre classe Java) comme ceci:
@Value("${base.module.elementToSearch}")
private String[] elementToSearch;
Et si vous utilisez un autre délimiteur que la virgule, vous pouvez également l'utiliser.
@Value("#{'${my.config.values}'.split(',')}")
private String[] myValues; // could also be a List<String>
et
vous pourriez avoir dans les propriétés de votre application
my.config.values=value1, value2, value3
Voici un exemple de ce que vous pouvez faire au printemps 4.0+
application.properties
contenu:some.key=yes,no,cancel
@Autowire
private Environment env;
...
String[] springRocks = env.getProperty("some.key", String[].class);