ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
       RecordDao dao = (RecordDao)bf.getBean("recordDao"); 
       dao.save(r);我用以上方法能运行,不会报错。但是我改成 private RecordDao recordDao;

public RecordDao getRecordDao() {
return recordDao;
}public void setRecordDao(RecordDao recordDao) {
this.recordDao = recordDao;
}
.........
recordDao.save(r);
却不能注入。System.out.println(userDao); 打印结果为空。配置文件如下: <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
        <property name="sessionFactory">  
            <ref bean="sessionFactory"/>  
        </property>  
    </bean>  
    
    
   <!--   <bean id="hibernateTemplet"  
        class="org.springframework.orm.hibernate3.HibernateTemplate">  
        <property name="sessionFactory">  
            <ref bean="sessionFactory" />  
        </property>  
    </bean>  -->
          
     
     <bean id="userDao" class="fanfull.order.dao.impl.UserDaoImpl">  
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean>  
    
    <bean id="recordDao" class="fanfull.order.dao.impl.RecordDaoImpl">  
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean>  
为什么?

解决方案 »

  1.   

    ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
    然后
    你try catch 看下这句代码 报什么错了没有
      

  2.   

    你说的这种方式是正确的我换成set注入 就报错了,空指针异常!
      

  3.   

    我也是新手,模糊回答下我的理解吧,
    ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
    这句相当于对程序上下文的初始化,会在上下文中初始化所需要的bean,
    再用RecordDao dao = (RecordDao)bf.getBean("recordDao");就相当于从上下文中拿出来初始化的bean;
    但是你改后的程序相当于"只放了个口袋在那等着装bean"没有初始化上下文(也就是没有初始化所需要的bean)的启动程序,所以口袋得到的是空啊;
    在web应用系统中这个启动程序是由web.xml中的相关配置启动的.......
    请高手指点........
      

  4.   


    如果这行报错了 那错误在配置文件里 那个空 你看下 SESIONFACTORY 的配置 如果SESSIONFACTORY好的 就看下 HIBERNATE的数据库配置。
      

  5.   

    System.out.println(userDao),你userDao哪来的?是recordDao吧。
      

  6.   

    不好意思 这个写错了  userDao 也是这个action 你面的 只是不是这个功能的
      

  7.   

    private RecordDao recordDao;public RecordDao getRecordDao() {
    return recordDao;
    }public void setRecordDao(RecordDao recordDao) {
    this.recordDao = recordDao;
    }
    .........
    recordDao.save(r); 
    xml 里需要配置把 recordDao注入到你上边那个代码的类里
      

  8.   

    我想是你的底层没有集成hibernateDaoSupport.......
      

  9.   


    public Class test{
    private RecordDao recordDao;public RecordDao getRecordDao() {
    return recordDao;
    }public void setRecordDao(RecordDao recordDao) {
    this.recordDao = recordDao;
    }
    .........
    recordDao.save(r);
    }配置文件中需要注入:
     <bean id="test" class="XXX.Test">   
      <property name="recordDao" ref="recordDao" />   
      </bean>