尝试访问dao bean时,注入自动连接的依赖项失败

我在访问网页时遇到错误。 这是我的代码 –

web.xml文件 –

 index.jsp   dispatcher org.springframework.web.servlet.DispatcherServlet 1   dispatcher /   

调度程序servlet的名称 – “dispatcher-servlet.xml”

    <!--    -->                com.webProject.model.Student      org.hibernate.dialect.MySQLDialect true create none true       <!-- -->  

学生控制class –

 package com.webProject.controller; @Controller @RequestMapping("/Student") public class StudentController { @Autowired private IStudentDao studentDao; //List students; /*public StudentController() { students = new ArrayList(); }*/ public IStudentDao getStudentDao() { return studentDao; } public void setStudentDao(IStudentDao studentDao) { this.studentDao = studentDao; } @RequestMapping(value="details/{number}",method=RequestMethod.GET) public String studentDetails(@PathVariable("number") int studentNumber, Model model){ //Student student = this.students.get(studentNumber); Student student = (Student) getStudentDao().load(new Long(studentNumber)); model.addAttribute("student",student); model.addAttribute("studentNumber", Integer.toString(studentNumber)); return "studentDetails"; } @RequestMapping(value="addStudent", method=RequestMethod.POST) public String addStudent(@ModelAttribute("student") Student student, Model model){ if(student != null){ getStudentDao().save(student); //this.students.add(student); model.addAttribute("student", student); model.addAttribute("studentNumber", Integer.toString(getStudentDao().count())); return "studentAddSuccess"; }else{ throw new NullPointerException(); } } @RequestMapping(value="studentRegistration") public String sendStudentForm(Model model){ Student student = new Student(); model.addAttribute("student", student); return "studentForm"; } @RequestMapping(value="delete/{studentNumber}") public String deleteStudent(@PathVariable("studentNumber") int studentNumber, Model model){ Student student = (Student) getStudentDao().load(new Long(studentNumber)); model.addAttribute("std", student); getStudentDao().deleteById(new Long(studentNumber)); return "deleteStudent"; } } 

studentform.jsp

   
Student Name form:input path="studentName"
Department form:input path="department"
College form:input path="collegeName"

当我提到 – 这我得到一个错误,因为“未找到资源”。 所以我尝试包括我所有的包裹 –

     but then also i get same "resource not found" error. i tried another way as mentioned in another thread - http://stackoverflow.com/questions/7914363/injection-of-autowired-dependencies-failed    

但同样结果 – “资源未找到”。

所以只有当我给这个base-package =“com.webProject.controller”时,我才会得到“资源未找到错误”,但之后又出现了另一个错误 –

org.springframework.beans.factory.BeanCreationException:创建名为’studentController’的bean时出错:注入自动连接的依赖项失败;

嵌套exception是org.springframework.beans.factory.BeanCreationException:无法自动assembly字段:private com.webProject.dao.IStudentDao

com.webProject.controller.StudentController.studentDao; 嵌套exception是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有匹配

找到依赖的类型为[com.webProject.dao.IStudentDao]的bean:预期至少有1个bean可以作为此依赖项的autowire候选者。

依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

然后我试图注入studentDao,然后我也得到一个错误。

我正在使用Tomcat来部署这个工件。 并使用maven来构建这个项目。 我不确定spring + hibernate + maven项目是如何在tomcat中运行的?

我最近开始使用spring和hibernate进行编程,这是我使用这些技术的第一个项目。 如果我犯了一些基本错误,请原谅我。

能帮我解决一下吗?

学生道 –

 package com.webProject.dao; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import com.webProject.model.*; public abstract class AbstractHibernateDAOImpl implements AbstractDao { @Autowired private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } protected Class domainClass = getDomainClass(); /** * Method to return the class of the domain object */ protected abstract Class getDomainClass(); @SuppressWarnings("unchecked") public PersistentObject load(Long id) { return (PersistentObject) getHibernateTemplate().load(domainClass, id); } public void update(PersistentObject t) { getHibernateTemplate().update(t); } public void save(PersistentObject t) { getHibernateTemplate().save(t); } public void delete(PersistentObject t) { getHibernateTemplate().delete(t); } @SuppressWarnings("unchecked") public List getList() { return (getHibernateTemplate().find("from " + domainClass.getName() + " x")); } public void deleteById(Long id) { Object obj = load(id); getHibernateTemplate().delete(obj); } @SuppressWarnings("unchecked") public void deleteAll() { getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { String hqlDelete = "delete " + domainClass.getName(); int deletedEntities = session.createQuery(hqlDelete) .executeUpdate(); return null; } }); } public int count() { List list = getHibernateTemplate().find( "select count(*) from " + domainClass.getName() + " x"); Integer count = (Integer) list.get(0); return count.intValue(); } } 

学生dao界面 –

 package com.webProject.dao; public interface IStudentDao extends AbstractDao{ } 

学生dao实施 –

 package com.webProject.dao; import org.springframework.stereotype.Repository; import com.webProject.model.Student; @Repository ("studentDao") public class StudentDaoImpl extends AbstractHibernateDAOImpl implements IStudentDao{ @Override protected Class getDomainClass() { return Student.class; } } 

如果您的DAO类放在具有控制器类的不同包中,那么您应该更改组件扫描元素:

  

还要检查是否已使用@Repository(或@Component)注释注释了DAO类。