spring 用set 方法不能注入?

sw245711601 2011-06-27 05:07:44
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>


为什么?
...全文
593 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandan0912 2011-06-28
  • 打赏
  • 举报
回复

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>
yangxuebao123 2011-06-28
  • 打赏
  • 举报
回复
我想是你的底层没有集成hibernateDaoSupport.......
yangxuebao123 2011-06-28
  • 打赏
  • 举报
回复
有没有继承HibernateDao
张晓起 2011-06-28
  • 打赏
  • 举报
回复
private RecordDao recordDao;



public RecordDao getRecordDao() {
return recordDao;
}

public void setRecordDao(RecordDao recordDao) {
this.recordDao = recordDao;
}
.........
recordDao.save(r);


xml 里需要配置把 recordDao注入到你上边那个代码的类里
sw245711601 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fytx0113 的回复:]
System.out.println(userDao),你userDao哪来的?是recordDao吧。
[/Quote]
不好意思 这个写错了 userDao 也是这个action 你面的 只是不是这个功能的
fytx0113 2011-06-28
  • 打赏
  • 举报
回复
System.out.println(userDao),你userDao哪来的?是recordDao吧。
宁波朱超 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sw245711601 的回复:]
引用 2 楼 zhuchao_ko 的回复:
ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
然后
你try catch 看下这句代码 报什么错了没有

你说的这种方式是正确的

我换成set注入 就报错了,空指针异常!
[/Quote]

如果这行报错了 那错误在配置文件里 那个空 你看下 SESIONFACTORY 的配置 如果SESSIONFACTORY

好的 就看下 HIBERNATE的数据库配置。
int_ldh 2011-06-28
  • 打赏
  • 举报
回复
我也是新手,模糊回答下我的理解吧,
ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
这句相当于对程序上下文的初始化,会在上下文中初始化所需要的bean,
再用RecordDao dao = (RecordDao)bf.getBean("recordDao");就相当于从上下文中拿出来初始化的bean;
但是你改后的程序相当于"只放了个口袋在那等着装bean"没有初始化上下文(也就是没有初始化所需要的bean)的启动程序,所以口袋得到的是空啊;
在web应用系统中这个启动程序是由web.xml中的相关配置启动的.......
请高手指点........
sw245711601 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jumpheightway 的回复:]
逻辑有错
[/Quote]

指明一下!
sw245711601 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuchao_ko 的回复:]
ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
然后
你try catch 看下这句代码 报什么错了没有
[/Quote]
你说的这种方式是正确的

我换成set注入 就报错了,空指针异常!
宁波朱超 2011-06-27
  • 打赏
  • 举报
回复
ApplicationContext bf = new ClassPathXmlApplicationContext("applicationContext.xml");
然后
你try catch 看下这句代码 报什么错了没有
jumpheightway 2011-06-27
  • 打赏
  • 举报
回复
逻辑有错

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧