dò @nosebrain di credito come io non conoscevo "null-value" ma preferisco evitare di utilizzare i valori nulli del tutto particolare perché la sua Difficile rappresentare null
in un file di proprietà.
Ma qui è un'alternativa che utilizza null con fuori null-value
in modo che funzioni con qualsiasi segnaposto di proprietà.
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;
}
}
Personalmente preferisco la mia strada perché magari in seguito si desidera stuff.value
di essere un-comma-separated value o forse per ENUM l'interruttore è più facile. È anche più facile da testare :)
EDIT: in base ai commenti sull'utilizzo di enumerazioni e la mia opinione di non utilizzare null.
Quanto sopra funziona bene per me. Eviti nullo. Se i tuoi file di proprietà vogliono impostare esplicitamente che non vogliono gestirli, allora lo fai (ma non devi nemmeno specificarlo perché verrà impostato su NOTSET).
crap=NOTSET
null
è molto male ed è diverso da quello NOTSET
. Significa che la primavera o il test di unità non l'hanno impostato e questo è il motivo per cui c'è una differenza tra IMHO. Probabilmente userò ancora la notazione setter (esempio precedente) come più facile al test unitario (le variabili private sono difficili da impostare in un test unitario).
fonte
2012-08-16 20:55:24
Qual è l'equivalente della configurazione Java di questo? –
http://stackoverflow.com/questions/9347929/spring-set-a-property-only-if-the-value-is-not-null menziona utilizzando $ {some.param: # {null}}, e ha funzionato per me senza dover impostare nullValue, sembra che questo sia l'impostazione predefinita? (In un'applicazione Spring Boot.) – vorburger
Potere uso semplice di SPEL $ {stuff.value: # {null}} come suggerito da vorburger e in http://stackoverflow.com/questions/16735141/specify-default-property- value-as-null-in-spring – csf