这是我得到的错误:
严重:StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException:创建名为'usuarioControlador'的bean时出错:注入自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private com.blah.base.database.DAO.UsuarioDAO com.blah.base.controlador.UsuarioControlador.usuarioDAO;嵌套异常是org.springframework.beans.factory.UnsatisfiedDependencyException:在文件[C:\ Users \ Owner \ workspaceSpring.metadata.plugins \ org.eclipse.wst.server.core \ tmp3 \中定义名称为'UsuarioDAO'的bean创建错误wtpwebapps \ base \ WEB-INF \ classes \ com \ yavale \ base \ database \ hibernetDAO \ UsuarioHibernetDao.class]:通过类型为[org.hibernate.SessionFactory]的索引0的构造函数参数表示的不满意:::没有类型的限定bean找到依赖项的[org.hibernate.SessionFactory]:预计至少有一个bean可以作为此依赖项的autowire候选者 . 依赖注释:{@ org.springframework.beans.factory.annotation.Qualifier(value = sessionFactory)};嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型[org.hibernate.SessionFactory]的限定bean:期望至少有一个bean可以作为此依赖项的autowire候选者 . 依赖注释:{@ org.springframework.beans.factory.annotation.Qualifier(value = sessionFactory)}
这是我的UsuarioControlador(控制器):
@Controller
@RequestMapping("/")
public class UsuarioControlador {
private UsuarioDAO usuarioDAO;
@Autowired
public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
this.usuarioDAO = usuarioDAO;
}
@RequestMapping(method = RequestMethod.GET)
public String list(Model model) {
List<Usuario> usuarios = usuarioDAO.listarUsuarios();
model.addAttribute("usuarios", usuarios);
return "index";
}
}
这是UsuarioDAO:
public interface UsuarioDAO {
void insertarUsuario(Usuario usuario);
void modificarUsuario(Usuario usuario);
List<Usuario> listarUsuarios();
Usuario buscarUsuario(String idUsuario);
void eliminarUsuario(Usuario usuario);
}
这是实现UsuarioDAO的类:
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Service;
@Service(value="UsuarioDAO")
public class UsuarioHibernetDao extends HibernateDaoSupport implements UsuarioDAO{
@Autowired
public UsuarioHibernetDao(@Qualifier("mySessionFactory") SessionFactory
sessionFactory) {
this.setSessionFactory(sessionFactory);
}
public void insertarUsuario(Usuario usuario) {
this.getHibernateTemplate().save(usuario);
}
public void modificarUsuario(Usuario usuario) {
this.getHibernateTemplate().update(usuario);
}
public List<Usuario> listarUsuarios() {
return this.getHibernateTemplate().find("from Usuario");
}
public Usuario buscarUsuario(String idUsuario) {
return this.getHibernateTemplate().load(Usuario.class, idUsuario);
}
public void eliminarUsuario(Usuario usuario) {
this.getHibernateTemplate().delete(usuario);
}
}
这是我的servlet-context.xml:https://dl.dropboxusercontent.com/u/31349296/servlet-context.xml
我是 Spring 天的新人,所以我完全失去了这个 .
Edit :这是完整的堆栈跟踪:https://dl.dropboxusercontent.com/u/31349296/log.txt
Edit2 :
1 回答
您在限定符注释中使用了错误的标识符 . bean id是“mySessionFactory”但你给了“sessionFactory” . 此外,确保内容组件扫描正在扫描正确的包 .
更新:
另一个错误可能与导入hibernate会话有关 . 您应该使用
org.hibernate.Session
而不是org.hibernate.classic.Session