How to inject null value in Spring

In Spring, you can uses this special <null /> tag to pass a “null” value into constructor argument or property.

1. Constructor Argument

The wrong way to inject a null into constructor argument, a really common mistake, and nice try :)

  <bean id="defaultMongoTypeMapper1"
	 class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
	 <constructor-arg name="typeKey" value="null" />
  </bean>

Correct way.

  <bean id="defaultMongoTypeMapper"
	class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
	<constructor-arg name="typeKey">
		<null />
	</constructor-arg>
  </bean>

2. Property

The wrong way to inject null value into property.

  <bean id="myConverter"
	class="com.mkyong.convert.MoneyConverter">
	<property name="typeMapper" value="null" />
  </bean>

Correct way.

  <bean id="myConverter"
	class="com.mkyong.convert.MoneyConverter">
	<property name="typeMapper"><null/></property>
  </bean>
Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

  • Nishant

    Hi, Pretty nice article. I have one question though.
    The article explains the wrong way and correct way to pass null values, but it does not explain “why” a particular approach is wrong.
    Why kind of issues I might face going with the wrong approach.
    Basically, I want to understand why passing null as “null” is wrong.

    Thanks!

    • Dmitry

      Nishant, because null is interpreted, as String with value “null”.