0 0

springmvc 注入总是空指针异常5

各位大牛,小弟又来请教问题了
tomcat7.0+ spring3.1.1 + hibernate3.6.0
程序跑起来了,但是输入url后,抛空指针异常,查了很多资料,都没找到解决办法,请教大神

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.NullPointerException
cc.fanbang.api.manager.DBManager.addUser(DBManager.java:142)
cc.fanbang.api.controller.TestController.handleDBManagerTestRequest(TestController.java:43)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

数据库配置成功,运行之后所有表建立起来
这是applicationContext.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" >
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost/fanbang" />
<property name="user" value="root" />
<property name="password" value="root" />
<property name="maxPoolSize" value="40" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="20" />
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingDirectoryLocations">
<list>
<value>WEB-INF/mappings</value>
</list>
</property>
<property name="hibernateProperties" >
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
</value>
</property>
</bean>

<bean id="userDaoHibernate" class="cc.fanbang.api.dao.impl.UserDaoHibernate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

这是spring-servlet.xml
<bean id="testController" class="cc.fanbang.api.controller.TestController"></bean>

<bean id="dbManager" class="cc.fanbang.api.manager.DBManager" > 
<property name="userDaoHibernate" ref="userDaoHibernate" />
<!--
<property name="postDaoHibernate" ref="postDaoHibernate" />
<property name="replyDaoHibernate" ref="replyDaoHibernate" />
<property name="restaurantDaoHibernate" ref="restaurantDaoHibernate" />
<property name="relationshipDaoHibernate" ref="relationshipDaoHibernate" />
-->
</bean>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

这是web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml
</param-value>
  </context-param>

  <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
  </listener>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>

<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

问题补充:忘了说明,userDaoHibernate注入失败,总是空指针
class DBManager {
   private UserDaoHibernate userDaoHibernate;
   // 省略 set,get方法
   public void addUser(User user) {
   }
}

问题补充:上面补充的 class DBManager implements DBManagerInterface
2012年9月30日 23:31

3个答案 按时间排序 按投票排序

0 0

采纳的答案

忘了说明,userDaoHibernate注入失败,总是空指针   userDaoHibernate有setter方法吗?

2012年10月01日 07:33
0 0

貌似  private static UserDaoHibernate userDaoHibernate;
这个对象是不是要写成静态的。。。

2012年10月02日 14:00
0 0

想必你的DBManager.getInstance()这个方法肯定是采用单例模式创建的,那里面的DBManager的实例肯定是new出来的了,new出来的实例和你在xml中配置的Spring管理的实例:

<bean id="userDaoHibernate" class="cc.fanbang.api.dao.impl.UserDaoHibernate"> 
<property name="sessionFactory" ref="sessionFactory" /> 
</bean>

不是一个实例,因而里面的sessionFactory属性Spring是不会自动为你注入的,所以肯定是会抛空指针异常的。

2012年10月02日 10:19

相关推荐

Global site tag (gtag.js) - Google Analytics