当前位置: 首页 > 知识库问答 >
问题:

在我的控制器上使用@Autowired时,无此项定义异常

申高峯
2023-03-14

我对Spring的豆子有意见。当我试图运行这个在我的服务器我得到的错误:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'rio.antelodel.david.ejercicios_programacion.Model.DAO.PersonaDAO' available

这些是我的课程:

@Controller
public class PersonaController {

    @Autowired
    private PersonaDAO personaDAO;

    @RequestMapping("/persona")
    public ModelAndView getPersonasList () {

        ...

    }

}

这是我的名字

@Repository
public class PersonaDAO extends AHibernateDAO < Persona > {

    public Persona find (String key) {

        return getCurrentSession().get(getCurrentClass(), key);

    }

}

这是我的Spring上下文文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

<context:annotation-config/>
<tx:annotation-driven transaction-manager="txManager"/>

<bean id = "txManager" class = "org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name = "sessionFactory" ref = "sessionFactory" />
</bean>

<bean id= "dataSource" class= "org.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name = "driverClassName" value = "com.mysql.cj.jdbc.Driver"/>
    <property name = "url" value = "jdbc:mysql://localhost:3306/gestion_ejercicios_programacion?useSSL=false&amp;serverTimezone=UTC"/>
    <property name = "username" value = "root"/>
    <property name = "password" value = "mysqlpass"/>

</bean>

<bean id = "sessionFactory" class = "org.springframework.orm.hibernate5.LocalSessionFactoryBean">

    <property name = "dataSource" ref = "dataSource"/>
    <property name = "packagesToScan" value = "rio.antelodel.david.ejercicios_programacion."/>

    <property name = "hibernateProperties">
        <props>
            <prop key = "dialect">org.hibernate.dialect.Derbydialect</prop>
        </props>
    </property>

</bean>

<bean id = "personaController" class = "rio.antelodel.david.ejercicios_programacion.Controller.PersonaController" />

<bean id = "alumnoDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.AlumnoDAO" />
<bean id = "archivoDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.ArchivoDAO" />
<bean id = "categoriaDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.CategoriaDAO" />
<bean id = "dificultadAlumnoEjercicioDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.DificultadAlumnoEjercicioDAO" />
<bean id = "dificultadDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.DificultadDAO" />
<bean id = "ejercicioDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.EjercicioDAO" />
<bean id = "ejercicioIdeaDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.EjercicioIdeaDAO" />
<bean id = "personaDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.PersonaDAO" />
<bean id = "practicaDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.PracticaDAO" />
<bean id = "practicaEvaluacionDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.PracticaEvaluacionDAO" />
<bean id = "profesorDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.ProfesorDAO" />
<bean id = "pruebaEvaluacionDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.PruebaEvaluacionDAO" />
<bean id = "titulacionDAO" class = "rio.antelodel.david.ejercicios_programacion.Model.DAO.TitulacionDAO" />

</beans>

我已经测试并确保错误出现在控制器中的@autowed行中。

问题是,我的bean是在我的上下文文件中定义的,如果我在本地运行一个刚刚得到bean的主类(PersonaDAO pDAO=context.getBean(PersonaDAO.class);),它工作得非常好,所以我的应用程序只会在需要时识别bean。谢谢你的帮助

共有1个答案

萧霍英
2023-03-14

您正在用XML和context:annotation-config重新定义相同的bean,例如@Controller@Repositorybean应该自动扫描。只使用一种机制来注册bean。

 类似资料:
  • 问题内容: 我正在使用angularjs编写示例应用程序。我在chrome浏览器上遇到以下错误。 错误是 错误:[ng:areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined 呈现为 参数“ ContactContr

  • 控制器定义 ThinkCMF5的控制器完全按 TP5的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController 继承关系 th

  • 控制器定义 ThinkCMF6.0的控制器完全按 TP6.0的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController, Re

  • 控制器定义 控制器文件通常放在application/module/controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。 一个典型的控制器类定义如下: <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public fu

  • 问题内容: 我正在使用angularjs编写示例应用程序。我在chrome浏览器上遇到以下错误。 错误是 错误:[ng:areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined 呈现为 参数“ ContactContr

  • 问题内容: 如何使用TypeScript定义我的控制器。到目前为止,它在angular js中,但是我想更改为type script。以便可以快速检索数据。 问题答案: 我决定通过工作示例添加另一个答案。这是非常简单的版本,但应该显示所有的基本如何向我们 和 。 有一个工作的家伙 这将是我们扮演服务器的角色。 这将是我们的启动模块: 所以以后我们可以使用module 。这就是我们的index.ht