使用spring向service里面注入dao不成功。求救啊!
本帖最后由 PaperStar 于 2013-12-26 19:29:20 编辑
页面调用action,action调用service,service调用dao
用Debug查看action调用service方法时service有值,但是service调用dao时,dao为null
折腾一下午了,死活找不到原因。我两个写的貌似一样啊,为什么一个成功,一个不成功呢?
程序也不报错,求大神指点啊!
set方法已加入,名称也都核对没问题
//spring配置文件
//service文件
private UserDao dao;
public void setDao(UserDao dao) {
this.dao = dao;
}
public boolean checkEmail(String s) {
int num = dao.checkEmail(s);
return num==0?true:false;
}
//dao文件
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
public int checkEmail(String s) {
String hql="frome User where email = ?";
List list =this.getHibernateTemplate().find(hql,s);
return list.size();
}
}
分享到:
更多
------解决方案--------------------
你这样试试
还有,你的 UserDao 里 setDao 何意?你不会 service 里没有 setDao 吧?
------解决方案--------------------
看看启动或运行过程中的日志是否报错?
会不会是没有配置真确导致Dao注入失败。注意这个名字sessionFactory是否和配置的一致。
------解决方案--------------------
造成这种原因主要你是命名不规范;
你的dao是:public class UserDaoImpl extends HibernateDaoSupport implements UserDao
但你的配置文件命名却是:
,
这是不合理的,这个bean id ="UserDao",意思是说你的UserDaoImpl类中,是通过setUserDao注入进来,而你的却是setDao,所以注入不进来。一般的 bean id ="xxx",这个xxx应该和你的类名一致,并且首字母小写,也就是userDaoImpl,然后service中:private UserDao userDaoImpl;
public void setUserDaoImpl(UserDao userDaoImpl) {
this.userDaoImpl = userDaoImpl;
}