今天,本来好好的程序,突然出现java.lang.nullpointerexception异常。调试发现,Spring注入的一个变量一直是null,注入失败。
折腾了一个下午,终于发现,是大小写不一致导致的。
下面是Spring中的配置
<bean id="userDao" class="com.TPlay.DAO.UserDao">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="userListAction" class="com.TPlay.Action.UserListAction">
<property name="UserDao">
<ref local="userDao"/>
</property>
</bean>
下面是UserListAction的userDao定义和setter方法
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
配置文件中标红的userDao的大小写,必须和java文件中的标红的变量userDao的大小写保持一致,才能够正确不注入。否则会注入失败。
我的问题就出在将配置文件中的bean id定义成了UserDao,而java文件中的变量定义成了userDao,首字母大小写不一致导致Spring无法注入的。
而经过测试,配置文件中标蓝的UserDao只和setter方法名称中的UserDao的大小写有关,不影响程序执行。只是大小写不一致时,在IDE上会红色突出显示而已。
注:IDE为Intellij IDEA 13
网上查了很久,有人提类似问题,但是没有一篇文章详细说明该问题的解决办法。所以自己写了一篇,供大家参考。