Je reconnais à @nosebrain que je ne connaissais pas la "null-value", mais je préfère éviter d'utiliser des valeurs nulles, notamment parce qu'elles sont difficiles à représenter. null
dans un fichier de propriétés.
Mais voici une alternative utilisant la nullité sans null-value
afin qu'il fonctionne avec n'importe quel substitut de propriété.
public class MyObject {
private String value;
@Value("${stuff.value:@null}")
public void setValue(String value) {
if ("@null".equals(value)) this.value = null;
else this.value = value;
}
}
Personnellement, je préfère ma façon de faire parce que peut-être que plus tard tu voudras stuff.value
pour être une valeur séparée par des virgules ou peut-être un Enum, le changement est plus facile. C'est aussi plus facile à tester en unité :)
MODIFICATION : en fonction de vos commentaires sur l'utilisation des enums et de mon opinion sur la non-utilisation de null.
@Component
public class MyObject {
@Value("${crap:NOTSET}")
private Crap crap;
public enum Crap {
NOTSET,
BLAH;
}
}
Ce qui précède fonctionne bien pour moi. Vous évitez les null. Si vos fichiers de propriétés veulent explicitement définir qu'ils ne veulent pas le gérer alors vous faites ( mais il n'est même pas nécessaire de le spécifier car la valeur par défaut est NOTSET. ).
crap=NOTSET
null
est très mauvais et est différent de NOTSET
. Cela signifie que Spring ou le test unitaire ne l'a pas défini, c'est pourquoi il y a, à mon avis, une différence. Je continuerais probablement à utiliser la notation setter (exemple précédent) car elle est plus facile à tester en unité (les variables privées sont difficiles à définir dans un test unitaire).