Can I set null as the default value for a @Value in Spring?

java, spring, spring-annotations

Solution

You must set the nullValue of the PropertyPlaceholderConfigurer. For the example I'm using the string `@null` but you can also use the empty string as nullValue.

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <!-- config the location(s) of the properties file(s) here -->
    <property name="nullValue" value="@null" />
</bean>

Now you can use the string `@null` to represent the `null` value

@Value("${stuff.value:@null}")
private String value;

Please note: The context name space doesn't support the null value at the moment. You can't use

<context:property-placeholder null-value="@null" ... />

Tested with Spring 3.1.1

Problem

I'm currently using the @Value Spring 3.1.x annotation like this: ``` @Value("${stuff.value:}") private String value; ``` This puts an empty String into the variable if the attribute is not present. I would like to have null as the default instead of an empty String. Of course I also want to avoid an error when the property stuff.value is not set.

Original source

Related problems