public class MytestDAO extends HibernateDaoSupport {
          public List findAll() {

try {
String queryString = "from User";
return getHibernateTemplate().find(queryString);
} catch (RuntimeException re) {

throw re;
}
}
      
          public static void main(String[] args) {
MytestDAO dao=new MytestDAO();
System.out.print(dao.findAll().size());

}}         //自己写的测试类
         public class test {
        public static void main(String[] args) {

ApplicationContext con=new ClassPathXmlApplicationContext("applicationContext.xml");
MytestDAO dao=(MytestDAO)con.getBean("MytestDAO");
System.out.print(dao.findAll().size());
}}
我搭建好了ssh框架,什么都配好了,其实就是一个能运行的项目,然后突发奇想写了两个main方法测试,在dao里面的会报空指针异常,调试发现红色部分getHibernateTemplate()为空,但是下面那个是我写的一个测试类,它却没有异常,正确查出数据,这是为什么呢,高手解释一下

解决方案 »

  1.   

    HibernateTemplate是在applicationContext.xml中注入的..
    dao中的main方法没有读取配置文件,所以就获取不到HibernateTemplate,就为空了.
      

  2.   

    MytestDAO 在applicationContext.xml文件中配置了吗?
      

  3.   

    都说配好了添加spring支持的时候,它已经把sessionFaction注入MytestDAO了
      

  4.   

    测试类的dao是通过spring得到的,而dao类中的main方法中的dao不是通过spring得到的
      

  5.   


    我还是第一次看见在持久层写main方法测试的呢,你的测试不在spring的事物管理范畴之内,你是通过new来创建的Dao对象,而不是通过spring注入得到的,所以你要自己维护事物,自己创建sessionFactorgy对象,自己beginTransaction, commitTransaction, rollBack......
      

  6.   

    有什么问题大家探讨一下 加群深圳J2EE①群 32763598 验证 SZJP