在Spring与Hibernate整合后,在实例化时,拿到空值UserDAO dao = new UserDAO();
List<User> list = dao.findAll();
for(User u : list) {
System.out.println(u.getName());
}UserDAO为User实体类的DAO执行后的异常为:
log4j:WARN No appenders could be found for logger (com.cssuper.model.UserDAO).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NullPointerException
at com.cssuper.model.UserDAO.findAll(UserDAO.java:109)
at test.Test.main(Test.java:16)

解决方案 »

  1.   

    完全看不到spring的地方啊!
    有了spring一般这些东西都不用new了吧
    UserDAO dao = new UserDAO();
      

  2.   

    首先要将bean交给spring容器。写一个applicationContext.xml.如果是在服务器上,需要在web.xml配置listener,初始化spring容器。如果不是的话,需要先实例化spring容器,ApplicationContext ac = new ClassPathXMLApplicationContext("applicationContext.xml"); 然后调用ac的方法Object obj = ac.getBean(bean的名称);此obj既为bean的实例,就可以使用了。
      

  3.   

    没看到spring和hibernate的整合的代码,无法判断!不过一般来说,controller中是用service操作,不直接调用dao,而且也不是用new的方式,而是用注入的方式注入service。