Doy @nosebrain de crédito, ya que no sabía nada de "nulo valor" pero yo prefiero evitar el uso de valores nulos por completo sobre todo desde su es difícil representar null
en un archivo de propiedades.
Pero aquí está una alternativa usando null sin null-value
por lo que funcionará con el marcador de posición de cualquier propiedad.
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 prefiero mi camino porque a lo mejor más adelante desea stuff.value
para ser un valor separado por comas o tal vez para ENUM el interruptor es más fácil. También es más fácil probar la unidad :)
EDITAR: en función de sus comentarios sobre el uso de enumeraciones y mi opinión de no utilizar nulo.
@Component
public class MyObject {
@Value("${crap:NOTSET}")
private Crap crap;
public enum Crap {
NOTSET,
BLAH;
}
}
Lo anterior funciona bien para mí. Usted evita nulo. Si los archivos de su propiedad quieren establecer explícitamente que no quieren manejarlo, entonces lo hace (pero ni siquiera tiene que especificar esto ya que de manera predeterminada será NOTSET).
crap=NOTSET
null
es muy malo y es diferente de NOTSET
. Significa que la prueba de la primavera o de la unidad no lo configuró, razón por la cual existe una diferencia en mi humilde opinión. Todavía probablemente usaría la notación setter (ejemplo anterior) ya que es más fácil de probar unitario (las variables privadas son difíciles de establecer en una prueba unitaria).
¿Cuál es la configuración de Java equivalente a esto? –
http://stackoverflow.com/questions/9347929/spring-set-a-property-only-if-the-value-is-not-null menciona el uso de $ {some.param: # {null}}, y eso funcionó para mí sin tener que establecer nullValue, parece que este es el valor predeterminado? (En una aplicación Spring Boot) – vorburger
Poder de uso simple de SPEL $ {stuff.value: # {null}} como lo sugiere vorburger y en http://stackoverflow.com/questions/16735141/specify-default-property- value-as-null-in-spring – csf